获取每个部门中当前员工薪水最高的相关信息[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