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

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

更多相关文章

  1. sql grouping with rollup 按部门 合并一些部门

随机推荐

  1. 认识Activity,创建第一个android应用
  2. 浅论Android网络请求库——android-async
  3. Android和WebOS上使用debian
  4. activity在锁屏时候的生命周期
  5. Android(安卓)架构解析及驱动 键盘篇
  6. android 属性文件default.prop与adb
  7. Android(安卓)UI中的style和theme以及Ale
  8. Android应用程序组件Content Provider简
  9. Android(安卓)JNI/Hardware 加载(一)
  10. Android(安卓)手机无法连接mac解决办法