LC 速查

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;

数据表:Employee,Department · 关键字:找出每个部门工资前三高的员工,输出部门名、员工名、工资

← 上一题 2016年的投资修复表中的名字 下一题 →