これをタイトルで説明するのは非常に困難でしたが、ここに私が持っている表があります。
CATEGORY_ID COUNT GROUPING
1 130 H
2 54 B
3 128 C
4 70 D
5 31 E
6 25 F
7 64 A
8 59 F
9 66 B
10 62 E
11 129 C
12 52 G
13 27 A
14 102 A
15 101 C
を取得するためのクエリを作成しようとしていますTOP 5
CATEGORY_ID
。最初は全体的に並べ替えられますCOUNT
が、そのグループに基づいて、CATEGORY_ID
そのグループに関係なく、そのグループ内の他の を使用しCOUNT
ます。したがって、このルールに基づいて上記を実行したい場合TOP 5
(おそらく説明が不十分である可能性があります)、私の結果は次のようになります。
CATEGORY_ID COUNT GROUPING
6 25 F <-- THE LOWEST COUNT OVERALL
8 59 F <-- THE NEXT LOWEST IN GROUP 'F'
13 27 A <-- THE NEXT LOWEST OVERALL
7 64 A <-- THE NEXT LOWEST IN GROUP 'A'
14 102 A <-- THE NEXT LOWEST IN GROUP 'A'
私はここや他の場所をよく見て (RANK()、DENSE_RANK()、GROUPING SETS などを試してみました - 主に暗闇の中での刺し傷として)、壁にぶつかりました。
編集:もう1つのことは、COUNT
ランダムに関係を断ち切る必要があることです。たとえば、COUNT
が0
すべての行の場合、最初に返されるグループはランダムになります。以下の両方の回答に追加NEWID()
してこれを試しましたが、うまくいきませんでした。ORDER BY
ありがとうございました。