一、要求:查詢平均薪水最高部門的部門編號
二、背景: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 )
結果圖: