SQL 50 › 索引 › A6 Subqueries 子查询
LC 185部门工资前三高的所有员工Department Top Three Salaries 困难
Employee 表含员工工资与部门 id,Department 表存部门名;找出每个部门工资前三高的员工,输出部门名、员工名、工资。
思路 窗口函数 DENSE_RANK 按部门对工资降序排名,取 rk <= 3。
SELECT D.name AS Department, E.name AS Employee, E.salary AS Salary FROM ( SELECT name, salary, departmentId, DENSE_RANK() OVER ( PARTITION BY departmentId ORDER BY salary DESC) AS rk FROM Employee ) E JOIN Department D ON E.departmentId = D.id WHERE E.rk <= 3;