分组查询
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
简单案例
查询每个部门的平均工资
以部门为分组,查询每个部门平均工资
sql语句
结果:
查询每个工种的最高工资
以工种为分组,查询每个工种最高工资
sql语句
结果:
查询每个位置上的部门个数
以部门所处位置分组,查询每个位置部门个数
sql语句
结果:
添加分组前筛选(group by)
查询邮箱中包含a字符的每个部门的平均工资
- 筛选出邮箱包含’a’员工
- 以部门进行分组,查询每个部门的平均工资
sql语句
结果:
查询有奖金的每个领导手下员工的最高工资
- 筛选出有奖金的员工
- 以领导进行分组,查询每个领导手下员工的最高工资
sql语句
结果:
添加分组后筛选(having)
查询哪个部门的员工个数>2
- 以部门进行分组,查询每个部门的员工个数
- 筛选出员工人数>2的部门
错误查询
sql语句
结果:
查询每个工种有奖金的员工的最高工资>12000的工种编号和最高工资
- 以工种进行分组,查询每个工种有奖金的最高工资的员工
- 筛选出最高工资>12000
sql语句
结果:
查询领导编号>102的每个领导手下员工的最低工资>5000的领导编号和最低工资
- 以领导进行分组,查询每个领导手下员工最低工资
- 筛选出领导编号>102
sql语句
结果:
按函数分组查询
按员工的姓名的长度分组,查询每一组的员工个数,筛选出员工个数>5的有哪些
- 查询每个长度员工个数
sql语句
结果:
- 添加筛选条件
sql语句
结果:
多个字段查询
查询每个部门每个工种的员工的平均工资
sql语句
结果:
添加排序
查询每个部门每个工种的员工的平均资并班从低到高排序
sql语句
结果:
练习
1. 查询各 job_id 的员工工资的最大值,最小值,平均值,总和,并按 job_id 升序
2. 查询员工最高工资和最低工资的差距(DIFFERENCE)
3. 查询各个管理者手下员工的最低工资,其中最低工资不能低于 6000,没有管理者的员工不计算在内
4. 查询所有部门的编号,员工数量和工资平均值,并按平均工资降序
5. 选择具有各个 job_id 的员工人数
1
sql语句
结果:
2
sql语句
结果:
3
sql语句
结果:
4
sql语句
结果:
5
sql语句
结果: