【发布时间】:2020-01-17 08:09:47
【问题描述】:
我想创建查询,最多选择 x 行,记录按一个 id 分组,整个组必须是查询的结果。我基于过滤的值存储在 p_id 列中,具有相同值的行创建组。 如果是该表:
p_id age
0 00170 64
1 00170 64
2 00201 24
3 00201 64
4 00201 64
5 00300 24
6 00300 20
我想选择 4 行,但是因为 p_id 为 00170,00201 的组总共有 5 条记录我得到:
0 00170 64
1 00170 64
如果我选择 5 行,我会得到:
0 00170 64
1 00170 64
2 00201 24
3 00201 64
4 00201 64
如果我选择 6 行,我会得到(p_id 00300 是 2 条记录,因此不包括在内,总和超过 6):
0 00170 64
1 00170 64
2 00201 24
3 00201 64
4 00201 64
因此返回整个组。我正在使用 oracle db,使用 ROWNUM 选择 x 行很容易。当我尝试使用附加条件达到一定数量的行时,我会迷路。
【问题讨论】:
-
到目前为止你尝试了什么,你能分享一些你的代码吗?不要使用rownum来限制行数见stackoverflow.com/questions/470542/…
-
@Hrzug 。 . .从您的问题中不清楚是否订购了
p_id值。或者,如果有另一列对它们进行排序。也就是说,您总是想要p_id的最小值,还是想要基于表中其他列的“最早”。