案例:查询出每个部门工资最高的员工信息
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
图例解释: