-- 步骤1:使用子查询为每个部门的员工按薪资排名 SELECT department, -- 部门名称 employee_name, -- 员工姓名 salary -- 员工薪资 FROM ( -- 内部子查询:使用窗口函数计算每个部门内的薪资排名 SELECT department, employee_name, salary, -- RANK()函数:为每个部门的员工按薪资降序排名 -- PARTITION BY department:按部门分组计算排名 -- ORDER BY salary DESC:按薪资从高到低排序 RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS rk FROM employees ) t -- 子查询别名t -- 步骤2:筛选每个部门排名前2的员工 WHERE rk <= 2 -- 步骤3:最终结果按部门升序、薪资降序排列 ORDER BY department, salary DESC;