考虑以下示例数据:
Name Email RowRank PartitionRank
---- ----- ------- -------------
a1 e1 1 1
a1 e1 2 1
a2 e2 1 2
a2 e2 2 2
a2 e2 3 2
我正在尝试编写一个查询,该查询按名称 + 电子邮件对数据进行分区,然后为我提供每个分区中一行的索引和分区本身的数量(最后 2 列列出了预期的输出)。
我一直在尝试各种查询,使用 ROW_NUMBER 很容易生成 RowRank,但是我无法使用 4 个排名函数(NTILE、RANK、DENSE_RANK 或 ROW_RANK)中的任何一个来生成分区排名。我相信这应该是可能的,但我自己无法做到。
这是一个示例查询:
SELECT Name, Email,
ROW_NUMBER() OVER (PARTITION BY Name, Email ORDER BY Email, DisplayName) AS RowRank,
NTILE(1) OVER (PARTITION BY Name, Email ORDER BY Email, DisplayName) AS PartitionRank
FROM Zone.MyTable
有人可以帮我获得正确的分区等级。