Postgresql предел по N группам - PullRequest
0 голосов
/ 21 марта 2019
create table t (a integer, b text);
insert into t values (1, 'a'), (2, 'a'), (3, 'a'), (10, 'b'), (11, 'b'), (0, 'c');

Мне нужно ограничить выбор двумя первыми группами столбца b (1-a, 2-b);

select * from t order by b;
 a  | b 
----+---
  1 | a
  2 | a
  3 | a
 10 | b
 11 | b
 -- limit here
  0 | c
(6 rows)

Что-то вроде where b in (select distinct(b) from t order by b limit 2) без подзапроса.

1 Ответ

1 голос
/ 21 марта 2019

вы можете использовать функции Windows, такие как dens_rank:

select *,dense_rank()  over (order by  b) group_number from t order by b

, поэтому вы можете сделать:

select * from (
    select *,dense_rank() over (order by  b) group_number  from t order by b
) a where group_number<=2 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...