求助一个关于 group by 的问题
想要用group by实现每个分组限定条数,并且每个组都有顺序
具体例子见下面这个示例表吧,我想按照category来分组,每个组限制2条数据,每个分组按照weight降序排
| id | weight | category |
|---|---|---|
| 1 | 100 | 1 |
| 2 | 90 | 1 |
| 3 | 110 | 1 |
| 4 | 40 | 2 |
| 5 | 60 | 4 |
| 6 | 90 | 4 |
也就是说查询结果应该要类似:
| id | weight | category |
|---|---|---|
| 3 | 110 | 1 |
| 1 | 100 | 1 |
| 4 | 40 | 2 |
有什么好办法吗?
关于 LearnKu
整体的思路是:
把表分区,使得每个分区都有一个连续自增的排序字段
对应的sql见下:
查询结果如下:
通过限制每个分区的条数,获得目标结果
sql见下
b.rank<=2的意思是只去排名前2的数据,也就限制了每个分区大小为2.
组内排序的方法参考了 https://stackoverflow.com/questions/333366...