案例:查詢出部門中所有人的平均薪資等級
背景:當前數據庫的department表、salgrade表、employee表,數據分別如下:
情景1、查詢部門中所有人的平均薪水的等級
第一步:先查詢出每個部門的平均薪資,起別名t ,用作臨時表(一會放入子查詢)
-- 查詢出每個部門的平均薪資,起別名t ,用作臨時表(一會放入子查詢) SELECT e.departmentid,AVG(e.salary) as avgsal FROM employee as e GROUP BY departmentid;
結果圖:
最終SQL代碼:再為 t 表里的平均薪資查詢出對應的薪資等級
-- 用查詢出來的每個部門平均薪資表t,去匹配薪資等級表,找出每個部門的平均薪資是屬於什么薪資等級 SELECT t.departmentid,s.grade FROM (SELECT e.departmentid,AVG(e.salary) as avgsal FROM employee as e GROUP BY e.departmentid) t INNER JOIN salgrade s on t.avgsal BETWEEN s.losal and s.hisal ORDER BY t.departmentid;
最終查詢后的結果圖:
情景2、查詢部門中所有人的薪資等級的平均等級
第一步:先查出每個部門里員工對應的薪資等級,起別名為 t ,用作臨時表(一會用作子查詢)
SELECT e.*,s.grade FROM employee e INNER JOIN salgrade s ON e.salary BETWEEN s.losal and s.hisal ORDER BY departmentid;
結果圖:
最終SQL語句:再對 t 表里的每個部門員工的薪資等級求均值
SELECT t.departmentid,AVG(t.grade) as avgra FROM (SELECT e.*,s.grade FROM employee e INNER JOIN salgrade s ON e.salary BETWEEN s.losal and s.hisal ORDER BY departmentid ) t GROUP BY t.departmentid;
結果圖: