Я хочу создать запрос, в котором я выбираю до x строк, записи группируются по одному идентификатору, и результатом запроса должны быть целые группы. Значения, на которых основывается фильтрация, хранятся в столбце 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 строк. Я теряюсь, когда пытаюсь получить до определенного количества строк с дополнительными критериями.