Mysql_案例1:查询出每个部门工资最高的员工信息

案例:查询出每个部门工资最高的员工信息

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

 图例解释:

 

posted @ 2019-04-09 17:27  后来的后来123  阅读(22471)  评论(0编辑  收藏  举报