题解 | #获取每个部门中当前员工薪水最高的相关信息#
获取每个部门中当前员工薪水最高的相关信息
http://www.nowcoder.com/practice/4a052e3e1df5435880d4353eb18a91c6
这样写不知道 同一部门最大的薪水对应的是哪一个员工
SELECT t.dept_no,t.emp_no,MAX(t.salary)
FROM
(SELECT d.dept_no,s.emp_no,s.salary
FROM dept_emp d
LEFT JOIN salaries s
ON d.emp_no = s.emp_no) t
GROUP BY t.dept_no
正确的写法
SELECT dept_no,emp_no,salary
FROM
(SELECT d.dept_no,s.emp_no,s.salary
# 对每个部门的薪水做一个排序,找出排名第一的那个就是薪水最高的员工
,dense_rank() over(PARTITION BY d.dept_no ORDER BY s.salary DESC) AS ranking
FROM dept_emp d
LEFT JOIN salaries s
ON d.emp_no = s.emp_no
) t
WHERE ranking = 1
ORDER BY dept_no