oracle基础 第八篇 sql查询 分组函数

分组函数:

分组函数作用于一组数据,并对一组数据返回一个值。

组函数忽略空值

NVL函数使分组函数无法忽略空值

 

组函数类型:

AVG( expr):返回expr的平均值,只能用于数值型数据

COUNT(expr ): 返回expr不为空的记录总数。,适用于任意数据类型。

MAX( expr):返回expr的最大值,适用于任意数据类型 。

MIN ( expr):返回expr的最小值,适用于任意数据类型。

STDDEV(expr ):返回expr的标准偏差,只能用于数值型数据

SUM( expr):返回expr的总值,即求和,只能用于数值型数据

 

COUNT(DISTINCT expr):返回expr非空不重复的记录总数。

 

AVG( expr)=SUM( expr)   /   COUNT(expr )。

 

例如:

SELECT
  AVG(salary),
  SUM(salary),
  MIN(salary),
  MAX(salary)
FROM
  employees;

  

输出:

例如:

SELECT
	AVG (commission_pct),
	SUM (commission_pct) / COUNT (commission_pct)
FROM
	employees;

 

输出:

 

分组数据:

 GROUP BY 子句语法:可以使用GROUP BY子句将表中的数据分成若干组

例如:

求出各个部门的平均工资


SELECT
  department_id,
  AVG (salary)
FROM
  employees
GROUP BY
	department_id

输出:

 

在SELECT 列表中所有未包含在组函数中的列(字段)都应该包含 在 GROUP BY 子句中。包含在 GROUP BY 子句中的列不必包含在SELECT 列表中

例如:

求出各个部门,各个工种的平均工资:

SELECT
	department_id,
	job_id,
	AVG (salary)
FROM
	employees
GROUP BY
	department_id,
	job_id

输出:

 

SELECT
	AVG (salary)
FROM
	employees
GROUP BY
	department_id,
	job_id

输出:

不能WHERE 子句中使用组函数。 可以在 HAVING 子句中使用组函数。

 

过滤分组: HAVING 子句。

使用 HAVING 过滤分组:

1.    行已经被分组

2.    使用了组函数

3.    满足HAVING 子句中条件的分组将被显示。

 

例如:

查出各部门中平均工资大于6000的部门,以及其平均工资

SELECT
	department_id,
	AVG (salary)
FROM
	employees
HAVING
  AVG (salary)>6000
GROUP BY
	department_id
	

输出:

 

嵌套组函数:

显示各部门平均工资的最大值:

SELECT
	MAX(AVG (salary))
FROM
	employees
GROUP BY
	department_id

 

 

 

 

参考来自尚硅谷视频

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随风而行无疾而歌

看官,觉得不错,奖励一下呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值