按部门划分的前2名工资

时间:2015-02-04 13:22:06

标签: sql sql-server

以下是我所指的表格。

enter image description here

我想找到每个部门的2名员工,薪水最高。

2 个答案:

答案 0 :(得分:5)

使用ROW_NUMBER()获取每个部门的最高工资,然后从每个部门分区中选择前两个记录:

SELECT *
FROM (
   SELECT *, ROW_NUMBER() OVER (PARTITION BY Dept ORDER BY Salary DESC) AS rn
   FROM MyTable ) t
WHERE t.rn <= 2

答案 1 :(得分:5)

除上述答案外,如果存在关系(多个员工共享相同的薪水),您可以使用以下内容将其全部通过,而不是随意选择两个(这是ROW_NUMBER子句会这样做)

SELECT *
FROM (
   SELECT *, DENSE_RANK() OVER (PARTITION BY Dept ORDER BY Salary DESC) AS rn
   FROM MyTable ) t
WHERE t.rn <= 2