我有一组数据存储员工及其一段时间的收入(一个月说)。数据还存储多个站点,员工可以获得每个站点的收入。我正在尝试为数据添加排名,以便每个员工都根据每个站点的收入排名。
示例数据
EmpId Takings SiteID
1 150.00 1
1 0.00 2
2 0.00 1
2 100.00 2
3 100.00 1
3 1100.00 2
我已尝试过以下查询,但这只能让我排名最多为两位:
SELECT EmpId,Takings,SiteID, RANK() OVER (PARTITION BY EmpId ORDER BY Takings DESC) AS [Rank]
FROM #test
这给了我以下结果集:
EmpId Takings SiteID Rank
1 150.00 1 1
1 0.00 2 2
2 100.00 2 1
2 0.00 1 2
3 1100.00 2 1
3 100.00 1 2
我期待以下结果集:
EmpId Takings SiteID Rank
1 150.00 1 1
1 0.00 2 3
2 100.00 2 2
2 0.00 1 3
3 1100.00 2 1
3 100.00 1 2
如果我修改分区以包含SiteId,那么我的所有员工的排名都是1.
我在这里缺少什么,我确信这应该是一个简单的查询,但它现在正在扼杀我。
谢谢
答案 0 :(得分:3)
SELECT EmpId,Takings,SiteID, ROW_NUMBER() OVER (PARTITION BY SiteId ORDER BY Takings DESC) AS [Rank]
FROM #test
ORDER BY EmpId ASC, Takings DESC
希望这一个?