题目描述

有一个员工表 dept_emp 简况如下:

获取所有部门中当前员工薪水最高的相关信息 - 图1

有一个薪水表 salaries 简况如下:

获取所有部门中当前员工薪水最高的相关信息 - 图2

获取所有部门中员工薪水最高的相关信息,给出 dept_noemp_no 以及其对应的 salary ,按照部门编号升序排列,上述示例的查询结果为:

获取所有部门中当前员工薪水最高的相关信息 - 图3

答案解析

本题思路如下:

  • 分组(GROUP BY)计算每个部门的最高薪资
  • 连接员工部门信息表(dept_emp)和薪资表(salaries)以及步骤一查询出的最高薪资表
  • 筛选出工资等于最高薪资的人,查询相应的 dept_no,emp_no,maxSalary
  • 注意部门编号排序(ORDER BY

SQL 语句如下所示:

  1. SELECT d.dept_no,d.emp_no,m.maxSalary
  2. FROM dept_emp AS d
  3. INNER JOIN salaries AS s
  4. ON d.emp_no = s.emp_no
  5. INNER JOIN
  6. (
  7. -- 查询每个部门最高的薪资
  8. SELECT d.dept_no,MAX(s.salary) AS maxSalary
  9. FROM dept_emp AS d INNER JOIN salaries AS s
  10. ON d.emp_no = s.emp_no
  11. GROUP BY d.dept_no
  12. ) AS m
  13. ON d.dept_no = m.dept_no
  14. WHERE m.maxSalary = s.salary
  15. ORDER BY d.dept_no;