Предположим, у меня есть таблица, которая выглядит следующим образом, или, может быть, я иду в никуда.
create table customers (id text, name text, number int, useless text);
Со значениями
insert into customers (id, name, number, useless)
values
('1','apple',1, 'a'),
('2','banana',3, 'b'),
('3','pear',2, 's'),
('4','apple',1,'e'),
('5','banana',3,'s'),
('6','cherry',3, 'a'),
('7','cherry',4, 's'),
('8','apple',2, 'd'),
('9','banana',4, 'c'),
('10','pear',5, 'e');
Мой неудавшийся запрос psql такой.
select id, name, number, useless
from customers
where number < 4
group by customers.name limit 2
запрос, который я хочу использовать, он возвращает первые 2 уникальных сгруппированных по customer.name.Не первые 2 строки
В конце я хочу, чтобы он возвращал
('1','apple',1, 'a'),
('4','apple',1,'e'),
('8','apple',2, 'd'),
('2','banana',3, 'b'),
('5','banana',3,'s'),
, поэтому он возвращает первые 2 сгруппированных имени.Как мне сделать этот запрос?
Спасибо.
Редактировать:
Этот запрос - моя вторая попытка. Я знаю, что я вроде как близок.
select t.id, t.name, t.ranking
from (
SELECT id, name, dense_rank() OVER (order by name) as
ranking
FROM customers
group by name
) t
where t.ranking < 3