编写SQL查询按部门名称和性别分组查找员工表对应最高薪资
SQL查询实现方案
场景1:部门名称直接存储在employee表中(字段名为dept.name)
直接按两个分组字段聚合即可,使用MAX()聚合函数取每组最高薪资:
SELECT `dept.name` AS dept_name, gender, MAX(salary) AS max_salary FROM employee GROUP BY `dept.name`, gender;
对应样例数据的输出结果:
| dept_name | gender | max_salary |
|---|---|---|
| Accounts | F | 7000 |
| Accounts | M | 6000 |
| Finance | F | 4500 |
| Finance | M | 4000 |
| HR | F | 2000 |
| HR | M | 3000 |
场景2:部门名称存储在独立dept表中(需关联查询)
如果employee表仅存储部门iddept_id,部门名称name存储在dept表,需要先关联两张表再分组聚合:
SELECT d.name AS dept_name, e.gender, MAX(e.salary) AS max_salary FROM employee e JOIN dept d ON e.dept_id = d.id GROUP BY d.name, e.gender;
内容的提问来源于stack exchange,提问作者kk the great
相关产品推荐
相关产品推荐

