分组函数
一 介绍
1.分组函数作用于一组数据,并对一组数据返回一个值
2.组函数类型:
avg 平均值
count
max
min
stddev
sum
二 代码
1.工资最高的:SQL> select max(sal) from emp;
工资最低的:SQL> select min(sal) from emp;
平均工资:SQL> select avg(sal) from emp;
工资总数:SQL> select sum(sal) from emp;
记录总数:SQL> select count(emptno) from emp; 返回的是不为空的记录
SQL> select count(distinct emptno) from emp;
返回的是非空且不重复的记录总数 distinct是去掉重复的
也可以写为:
SQL> select min(sal),max(sal),min(sal) from emp;
结果为:
MIN(SAL) MAX(SAL) MIN(SAL)
---------- ---------- ----------
800 5000 800
注:(1)可以对数值型数据使用AVG 和 SUM 函数。
(2)可以对任意数据类型的数据使用 MIN 和 MAX 函数。
也可以对日期使用
SQL> select min(hiredate) from emp;
SQL> select max(hiredate) from emp;
2.分组数据
group by子句使用
例子:查询出employees中各部门的平均工资
SQL> select department_id,avg(salary) from employees group by department_id;
包含在 GROUP BY 子句中的列不必包含在SELECT 列表中,所以可以写为:
SQL> select avg(salary) from employees group by department_id;
可以进行多列的分组:
SQL> select department_id,job_id,sum(salary) from employees group by department_id,job_id;
注:(1)不能在 where 子句中使用组函数(注意)。
(2)可以在 HAVING 子句中使用组函数。
3.过滤分组 having子句
例子:部门最高工资比 1000高的部门
SQL> select department_id,max(salary) from employees group by department_id having max(salary)>1000;
每一个部门下有很多员工,通过对部门分组,把是一个部门员工分好在当前部门下,计算出最高的工资对比
4.嵌套组函数
例子:显示平均工资的最大值
SQL> select max(avg(salary)) from employees group by department_id;