案例:查詢出每個部門工資最高的員工信息
1、背景:當前數據庫有employee表和department表,數據分別如下:
employee表:
department表:
思考步驟:
1、從employee表里查詢出每個部門的最高薪資,作為一張臨時表 t
2、將臨時表 t 和 employee表進行內連接,並新增一列,顯示employee表里每個員工所在部門對應的最高薪資
3、再用 employee表里每個員工的薪資字段salary 和 部門最高薪資字段列maxsalary進行判斷,查詢出相等數據,此處則查詢出了每個部門最高薪資的員工有哪些,作為表 tt
4、因為表 tt 沒有部門名稱,所以我們再將表 tt 和department 表進行內鏈接,查詢部門id相等的數據,從而查詢出每個員工所在的部門名稱
SQL語句:
1 SELECT tt.*,d.name 2 from 3 ( 4 SELECT e.*,t.maxsalary 5 from ( 6 SELECT departmentid,MAX(salary) as maxsalary 7 from employee 8 GROUP BY departmentid 9 ) as t 10 11 INNER JOIN 12 employee as e 13 14 on 15 t.departmentid = e.departmentid 16 17 WHERE 18 e.salary=t.maxsalary 19 ) as tt 20 21 INNER JOIN 22 department as d 23 on 24 tt.departmentid = d.id 25 26 ORDER BY tt.departmentid,tt.id
圖例解釋: