组函数的类型:
•AVG
•COUNT
•MAX
•MIN
•STDDEV
•SUM
可以对数值型数据使用AVG和SUM函数。
SELECT AVG(salary), MAX(salary),
MIN(salary), SUM(salary)
FROM employees
WHERE job_id LIKE '%REP%';
可以对任意数据类型的数据使用MIN和MAX函数。
SELECT MIN(hire_date), MAX(hire_date)
FROM employees;
COUNT(*) 返回表中记录总数,适用于任意数据类型。
SELECT COUNT(*)
FROM employees
WHERE department_id = 50;
•COUNT(expr)返回expr不为空的记录总数。
SELECT COUNT(commission_pct)
FROM employees
WHERE department_id = 50;
组函数忽略空值
SELECT AVG(commission_pct)
FROM employees;
NVL函数使分组函数无法忽略空值。
SELECT AVG(NVL(commission_pct, 0))
FROM employees;
•COUNT(DISTINCT expr)返回expr非空且不重复的记录总数
SELECT COUNT(DISTINCT department_id)
FROM employees;
分组数据
GROUP BY子句语法
可以使用GROUP BY子句将表中的数据分成若干组
SELECT department_id, AVG(salary)
FROM employees
GROUP BY department_id ;
包含在GROUP BY子句中的列不必包含在SELECT列表中
SELECT AVG(salary)
FROM employees
GROUP BY department_id ;
SELECT department_id dept_id, job_id, SUM(salary)
FROM employees
GROUP BY department_id, job_id ;
过滤分组:HAVING子句
满足HAVING子句中条件的分组将被显示
SELECT department_id, MAX(salary)
FROM employees
GROUP BY department_id
HAVING MAX(salary)>10000 ;
嵌套组函数
显示各部门平均工资的最大值
SELECT MAX(AVG(salary))
FROM employees
GROUP BY department_id;