获取每个部门中当前员工薪水最高的相关信息[SQL,困难]

题目

记牛客网SQL12

 

 

获取每个部门中当前员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary,按照部门编号升序排列,以上例子输出如下:

 

 

 

题解

第一直觉是“join两张表,group一下部门,然后取max薪资”,但是出现了薪资和人员不匹配的情况
这里记录一个笨办法
在“join两张表,group一下部门,然后取max薪资”的基础上再join一次“两张表的join”,同时匹配部门编号和薪资
如果有更容易理解的方法欢迎评论噢。

SELECT 
    a.dept_no,
    a.emp_no,
    maxSalary
FROM 
    (SELECT dept_no,MAX(salary) maxSalary
     FROM (SELECT de.emp_no,de.dept_no,s.salary
            FROM dept_emp de
            JOIN salaries s USING(emp_no)) AS a
     GROUP BY dept_no) AS b
INNER JOIN 
    (SELECT de.emp_no,de.dept_no,s.salary
     FROM dept_emp de
     JOIN salaries s USING(emp_no)) AS a
ON a.dept_no = b.dept_no AND a.salary = b.maxSalary
ORDER BY a.dept_no

这边用到了 a join b using() 替代 a join b on

posted @ 2021-05-31 10:48  wooooc  阅读(145)  评论(0)    收藏  举报