Выберите два элемента из каждой категории с помощью SQL - PullRequest
0 голосов
/ 06 августа 2020

Рассмотрим следующую таблицу

id | fruit | score
---+-------+------
1  | pear  | 9
2  | plum  | 5
3  | plum  | 7
4  | apple | 4
5  | plum  | 2
6  | pear  | 3

Мне нужен запрос SQL (POSTGRES диалект), который выбирает яблоки и сливы с наименьшими баллами, по два из каждой категории. Результатом будет

id | fruit | score
---+-------+------
 4 | apple | 4
 5 | plum  | 2
 2 | plum  | 5

Я начал с

SELECT id, fruit, score 
FROM fruit_score 
WHERE fruit IN ('apple', 'plum') 
ORDER BY score

Как мне LIMIT по фруктам?

1 Ответ

2 голосов
/ 06 августа 2020

Вы можете использовать row_number(), если хотите гарантировать две строки на fruit:

select fs.*
from (select fs.*, row_number() over (partition by fruit order by score asc) as seqnum
      from fruit_score fs
      where fruit IN ('apple', 'plum') 
     ) fs
where seqnum <= 2; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...