分组函数作用于一组数据,并对一组数据返回一个值。
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;