ORACLE 分组函数

开发工具与关键技术:Oracle sql*plus PLSQL Developer
作者:杨文艺
撰写时间:2019年04月26日
分组函数作用于一组数据,并对一组数据返回一个值。
1.关键字AVG(平均值)、SUM(合计) ,在查询数值型的数据时可以使用AVG 和 SUM 函数。示例代码如下:

select avg(salary),sum(salary)
from employees
where department_id=30;

在这里插入图片描述
需要注意一个问题,AVG函数只是计算不为空的数据,可以使用NVL函数解决该问题,NVL函数使分组函数无法忽略空值。

SELECT  AVG(NVL(commission_pct, 0))
FROM   employees;

2.关键字MAX(最大值)、MIN(最小值),可以对任意数据类型的数据使用MIN和MAX 函数select

min(salary),max(salary)
from employees
where department_id=80; 

在这里插入图片描述
3. COUNT(计数)函数,COUNT(*) 返回表中记录总数,适用于任意数据类型,COUNT(expr) 返回expr不为空的记录总数。如以下两个例子:

SELECT COUNT(manager_id)
FROM   employees;

在这里插入图片描述

select count(*) from employees;

在这里插入图片描述
4.distinct关键字,例如COUNT(DISTINCT expr)返回expr非空且不重复的记录总数

select count(distinct manager_id)
from employees;

在这里插入图片描述
5.group by字句:在SELECT 列表中所有未包含在组函数中的列都应该包含在 GROUP BY 子句中, 包含在 GROUP BY 子句中的列不必包含在SELECT 列表中。另外需要注意的是,不能
在WHERE 子句中使用组函数,可以在 HAVING 子句中使用组函数。

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

在这里插入图片描述
5.过滤分组:having字句

SELECT   department_id, job_id, AVG(salary)
FROM     employees
GROUP BY department_id, job_id 
having AVG(salary)>7500;

在这里插入图片描述
6.嵌套组函数,例如查询各个职位平均工资的最大值

SELECT   MAX(AVG(salary))
FROM     employees
GROUP BY job_id;

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44547592/article/details/89577353