次のサンプル データを検討してください。
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 列には、予想される出力がリストされています)。
さまざまなクエリを試してみましたが、RowRank は ROW_NUMBER で簡単に生成できますが、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
誰かがパーティションのランクを正しくするのを手伝ってくれませんか?