SELECT
dept_no,
emp_no,
salary--外查询
FROM (
-- 子查询:给每个部门的员工按薪资降序排名
SELECT
d.dept_no,
d.emp_no,
s.salary,
-- 按部门分组,薪资降序排序,相同薪资会有相同排名(如需唯一排名用 ROW_NUMBER())-先运行子查询
RANK() OVER (PARTITION BY d.dept_no ORDER BY s.salary DESC) AS salary_rank-select后面跟窗口函数
FROM dept_emp d
JOIN salaries s
ON d.emp_no = s.emp_no
-- 筛选当前在职的员工和当前有效的薪资(避免历史数据干扰)
WHERE d.to_date = '9999-01-01'
AND s.to_date = '9999-01-01'
) AS ranked_emp
-- 只保留部门内排名第一的员工(薪资最高)
WHERE salary_rank = 1--子查询中降低第一名的
ORDER BY dept_no ASC; -- 按部门编号升序排列