SQL 多个条件的 Rank()

SQL Rank() for multiple conditions

我有一组数据存储员工及其一段时间(比如一个月)的收入。数据还存储多个站点,员工可以为每个站点获取收入。我正在尝试为数据添加排名,以便每个员工都有一个基于收入的排名,对于每个站点。

示例数据

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。

我在这里遗漏了什么,我相信这应该是一个简单的查询,但此刻它让我很痛苦。

谢谢

SELECT EmpId,Takings,SiteID, ROW_NUMBER() OVER (PARTITION BY SiteId ORDER BY Takings DESC) AS [Rank]
FROM #test
ORDER BY EmpId ASC, Takings DESC

希望是这个?