这样写不知道 同一部门最大的薪水对应的是哪一个员工
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



京公网安备 11010502036488号