SQL: получить 3 первых вхождения поля - PullRequest
1 голос
/ 03 марта 2020

У меня есть таблица PostgreSQL с 2 полями, как показано ниже. Поле А является первичным ключом.

A  | B
------
1  | 1
2  | 1
3  | 1
4  | 1
5  | 2
6  | 2
7  | 2
8  | 2
9  | 2
10 | 3 
11 | 3

Я ищу запрос, чтобы получить только 3 первых появления B, например:

A  | B
1  | 1 
2  | 1
3  | 1
5  | 2
6  | 2
7  | 2
10 | 3
11 | 3

У кого-нибудь есть решение?

1 Ответ

2 голосов
/ 03 марта 2020

Вы хотите row_number():

select t.*
from (select t.*, row_number() over (partition by b order by a) as seq
      from table t
     ) t
where seq <= 3;
...