我正在尝试对过去 5 年中每年特定部门收入最高的 3 名员工进行排名。
该表包含以下列: 员工ID 部门_ID 薪水 年
我正在尝试dense_rank,但发现它很混乱
要使用 DENSE_RANK 对每个部门过去 5 年每年收入最高的 3 名员工进行排名,您可以使用以下 SQL 查询。此查询将按 Dept_ID 和 Year 对数据进行分区,然后按 Salary 对每个分区内的行进行降序排序。它将为每一行分配一个密集排名,并仅过滤掉前 3 个排名。
具体操作方法如下:
SELECT Employee_ID, Dept_ID, Salary, Year, DenseRank
来自( 选择 员工ID, 部门_ID, 薪水, 年, DENSE_RANK() OVER (PARTITION BY Dept_ID, Year ORDER BY Salary DESC) AS DenseRank 从 雇员 在哪里 Year >= YEAR(GETDATE()) - 5 -- 过滤过去 5 年 ) AS 排名 在哪里 密集排名 <= 3 ORDER BY Dept_ID, Year, DenseRank;