#进阶5:分组查询
引入:查询每个部门的平均工资
SELECT AVG(salary) FROM employees;
语法:
SELECT 分组函数,列(要求出现在GROUP BY 的后面)
FROM 表名
WHERE 筛选条件
GROUP BY 分组列表
ORDER BY 子句;
注意:1、查询列表是分组函数和GROUP BY后出现的字段
总结: 1、分组查询中的筛选条件可以分为两类
①分组前筛选:数据源是原始表,筛选条件放在GROUP BY的前面,使用WHERE关键字进行筛选
②分组后筛选:分组后的结果,筛选条件放在GROUP BY后面,使用HAVING关键字进行筛选
分组函数做条件肯定放在HAVING子句中。
能用分组前筛选的,优先考虑分组前使用,性能更佳。
2、GROUP BY支持单个字段分组和多个字段分组,字段间用逗号隔开,无顺序要求,支持表达式和函数
3、也可以添加排序,放在整个语句后面。
简单分组查询
案例1:查询每个工种的最高工资
SELECT MAX(salary),job_id
FROM employees
GROUP BY job_id;
案例2:查询每个位