这在标题中真的很难解释,但这是我的一张表:
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
's,首先按整体排序COUNT
,然后基于该组使用该组中的其他CATEGORY_ID
's 而不管他们的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 之类的东西 - 主要是在黑暗中刺伤)并且到处都是墙壁。
编辑:另外一件事是我需要COUNT
随机打破联系。因此,例如,如果COUNT
是0
所有行,则返回的第一组应该是随机的。我已经通过添加NEWID()
到ORDER BY
下面的两个答案中来尝试过这个,但没有运气。
谢谢你。