- 分组函数
功能:用作统计使用,又称聚合函数或者统计函数或者组函数
分类:sum求和、avg平均值、max最大值、min最小值、count计算个数
特点:1、sum、avg一般用于处理数值型
max、min、count可以处理任何类型
2、以上分组函数都忽略null值
3、可以和distinct搭配使用实现去重云运算
4、分组查询中的筛选条件分为两类
数据源 位置 关键字
分组前筛选 原始表 group by前面 WHERE
分组后筛选 分组后的结果集 group by后面 HAVING
分组函数做条件肯定是放在HAVING子句中
能用分组前筛选的,优先考虑分组前筛选。
5、group by 子句支持单个字段分组,也支持多个字段分组,多个字段之间用逗号隔开,没有先后顺序要求,也支持表达式或函数
6、也支持排序,放在整个语句的最后。
count函数:
select count(salary) from employees;
select count(*) from employees;统计行数
select count(1) from employees;加常量值相当于在表中加了一列常量值
效率:innodb存储引擎,count(*)和count(1)效率差不多,都比count(字段)效率高
分组函数查询字段要求是group by后面的字段
- 分组查询
select 分组函数,列(要求出现在group by的后面)from 表
【where 筛选条件】
group by 分组函数
【order by】
查询统计每个部门的平均工资group by
分组前筛选
分组后筛选
查询哪个部门的员工个数>2
select count(*),department_id
from employees
group by department_id
having count(*)>2 分组后筛选
查询每个工种有奖金的员工的最高工资>12000的工种编号和最高工资
select max(salary),job_id
from employees
where commission_pct is not null
group by job_id
having max(salary)>12000
可以多字段分组查询,支持排序操作