ORACLE分组函数
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:Oracle sql * plus PLSQL Developer
作者:叶
撰写时间:2019年01月01日
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
分组查询:(多行函数 多行返回一行)
AVG () 对数值类型求平均值
SUM () 对数值类型求和
MAX () 对任何类型求最大值
MIN () 对任何类型求最小值
COUNT () 返回表中记录总数(任何类型)
在分组函数中我们可以用AVG(平均值)、SUM(合计) 对数值类型使用AVG 和SUM 函数,
MIN(最小值)、MAX(最大值) 可以对任意类型的数据使用MIN 和MAX 函数。
SELECT SALARY, AVG (SALARY) AS “平均值”, SUM (SALARY) AS “求和” FROM EMPLOYEES
GROUP BY SALARY;
SELECT LAST_NAME, MAX (SALARY) AS “最大值”, MIN (HIRE_DATE) AS “最小值” FROM EMPLOYEES
GROUP BY LAST_NAME;
COUNT(计数) 函数:COUNT(*) 返回表中的记录总数,适用于任意数据类型,
返回的值不为空的记录总数:不计算空值。
SELECT COUNT (SALARY) AS “钱数”, COUNT (MANAGER_ID) AS “人数” FROM EMPLOYEES;
我们用组函数来查询空值,要使用NVL函数,先把空值转换成一个对结果集
没有影响的值,再用组函数。
SELECT AVG (COMMISSION_PCT) AS “数值1” FROM EMPLOYEES;
SELECT AVG (NVL (COMMISSION_PCT, 0)) AS “数值2” FROM EMPLOYEES;
使用 “DISTINCT”关键字:
SELECT COUNT (DISTINCT DEPARTMENT_ID) FROM EMPLOYEES;
使用GROUP …BY ,HAVING 子句
- 不能在 WHERE 子句中使 用 组函数。
- 可以在 HAVING 子句中使 用 组函数。
其顺序:1、SELECT 语句,2、FROM 紧跟SELECT , 3、WHERE, 4、WHERE 过滤条件
- GROUP BY 分组函数,6、HAVING 子在句,7、ORDER BY 语句,ORDER BY 语句无论
都是在语句的句末。
SELECT DEPARTMENT_ID, COUNT (*), MAX (SALARY) FROM EMPLOYEES
FROM EMPLOYEES
WHERE DEPARTMENT_ID >60
GROUP BY DEPARTMENT_ID
HAVING MAX (SALARY) >10000
ORDER BY DEPARTMENT_ID;