聚合函数
聚合函数对行进行操作,以使每个组产生一个结果。
AVG(字段)与SUM(字段)函数
查找最大和最小入职日期
SELECT MAX(hire_date), MIN(hire_date) FROM employees WHERE job_id LIKE '%PROG%'; MAX(HIRE_DATE) MIN(HIRE_DATE) ------------------- ------------------- 2007-05-21 00:00:00 2005-06-25 00:00:00
AVG函数遇到NULL的字段会忽略,比如十条记录求平均值,有两条记录是NULL,所以得到的结果是总数/8的结果。
要解决这个问题,需要使用NVL函数先将NULL值替换,然后嵌套在AVG函数内部求平均数。
SELECT AVG(commission_pct) FROM employees; --只有非NULL记录参加了计算 AVG(COMMISSION_PCT) ------------------- .222857143 SQL> SELECT AVG(NVL(commission_pct,0)) FROM employees; --将NULL记录替换为0后参加计算。 AVG(NVL(COMMISSION_PCT,0)) -------------------------- .072897196
COUNT(字段)求个数,这个函数不统计空值。
找出工资大于10000的员工数量
SELECT COUNT(commission_pct) FROM employees;
COUNT(COMMISSION_PCT)
---------------------
35
SELECT COUNT(*) FROM employees;
COUNT(*)
----------
107
DISTINCT关键字去除重复
根据员工表统计出部门的数量
SELECT COUNT(DISTINCT(department_id)) FROM employees; COUNT(DISTINCT(DEPARTMENT_ID)) ------------------------------ 11