分组函数也叫多行处理函数,即多个输入,一个输出
分组函数就只有五个:
- count 计数
- sum 求和
- avg 平均数
- max 最大值
- min 最小值
分组函数使用的规则:不能直接使用在where函数的子句当中。
原因: where的优先级大于分组函数
已知emp表的内容为:
一.分组函数的具体使用:
1.count (*)表示统计总记录条数,不是统计某个字段中数据的个数。
count(字段):表示统计指定字段中不为null的数据总数量。
2.求工资sal的总和
3.求工资的平均数
4.求工资的最大值
5.求工资的最小值
针对上面分组函数使用的规则:不能直接使用在where函数的子句当中,
有个经典的错误:
举例:查找工资大于平均工资的员工名字和工资:(以下是把分组函数用在where的子句中,会报错)
按照步骤来计算:
- 计算平均工资:select avg(sal) from emp;
- 找出工资高于平均工资的员工(把上面这句代入where的子句):select ename,sal from emp where sal > (select avg(sal) from emp);
分组函数一般会和group by一起使用。当一个sql语句没有group by时,整张表的数据会自成一组。
group by:按照某个字段或者某些字段进行分组。sql语句执行顺序:先from,在group by,再select分组函数。
语法:select 字段1,字段2 from 表 where 条件 group by 分组的字段;
单个字段分组:
例子:查找出部门20中最高工资sal的员工
多个字段联合分组:
例子:找出每个部门不同岗位的最高薪资