一、要求:查询平均薪水最高部门的部门编号
二、背景:emplyee表数据如下
三、难点:需要考虑最高平均薪资可能在多个部门同时出现,查询出来的结果需要涵盖所有最高平均薪资的部门id
四、思路:
第一步:先求出每个部门的平均薪资,作为临时表 t
SELECT departmentid,AVG(salary) avgsal FROM employee GROUP BY departmentid
第二步:从第一步得出的每个部门平均薪资里求出最高值
SELECT MAX(t.avgsal) maxsal FROM ( SELECT departmentid,AVG(salary) avgsal FROM employee GROUP BY departmentid) t
第三步:用 临时表 t 再去匹配第二步得出的最大值,看哪个部门的平均薪资等于第二步的值
最终代码:
SELECT e.departmentid,AVG(e.salary) avgsal FROM employee e GROUP BY departmentid HAVING avgsal = ( SELECT MAX(t.avgsal) maxsal FROM ( SELECT departmentid,AVG(salary) avgsal FROM employee GROUP BY departmentid) t )
结果图:
原文地址:https://www.cnblogs.com/wodexk/p/10703850.html
时间: 2024-10-09 23:41:47