我有一个名为 t1 的表,其中包含以下字段:ROWID、CID、PID、Score、SortKey
它有以下数据:
1, C1, P1, 10, 1
2, C1, P2, 20, 2
3, C1, P3, 30, 3
4, C2, P4, 20, 3
5, C2, P5, 30, 2
6, C3, P6, 10, 1
7, C3, P7, 20, 2
我要写什么查询,以便它在 CID 上应用 group by,但不是每组返回 1 个结果,而是每组最多返回 2 个结果。还有条件是分数> = 20,我想要按CID和SortKey排序的结果。
如果我必须对上述数据运行查询,我希望得到以下结果:
C1 的结果 - 注意:ROWID 1 不被视为其分数 < 20
C1, P2, 20, 2
C1, P3, 30, 3
C2 的结果 - 注意:ROWID 5 出现在 ROWID 4 之前,因为 ROWID 5 具有较小的值 SortKey
C2, P5, 30, 2
C2, P4, 20, 3
C3 的结果 - 注意:ROWID 6 没有出现,因为它的分数小于 20,所以这里只返回 1 条记录
C3, P7, 20, 2
简而言之,我想要一个 GROUP BY 中的限制。我想要最简单的解决方案,并希望避免使用临时表。子查询很好。另请注意,我为此使用 SQLite。