Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как выбрать с лимитом по полю? / 6 сообщений из 6, страница 1 из 1
08.12.2014, 12:04
    #38827872
01ssv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать с лимитом по полю?
Здравствуйте,
есть таблица accounts:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE accounts
(
  id_region integer,
  login character varying(256)
)
WITH (
  OIDS=TRUE
);



В таблице такие записи:
id_region;login1;test11;test21;test31;test41;test51;test61;test72;test82;test92;test102;test112;test122;test13


Подскажите как выбрать для каждого id_region по две записи, т.е.:
id_region;login1;test11;test62;test112;test13
Можно в случайном порядке (это не важно)
...
Рейтинг: 0 / 0
08.12.2014, 12:37
    #38827899
01ssv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать с лимитом по полю?
В данный момент у меня такой вариант:

Код: sql
1.
2.
3.
4.
select distinct id_region, (select login from apparats where apparats.id_region = a2.id_region limit 1) from apparats a2 
union
select distinct id_region, (select login from apparats where apparats.id_region = a3.id_region limit 1 offset 1) from apparats a3
order by id_region



Но он мне не нравится
...
Рейтинг: 0 / 0
08.12.2014, 13:01
    #38827934
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать с лимитом по полю?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
with accounts(id_region, login) as (values
    (1, 'test1'),
    (1, 'test2'),
    (1, 'test3'),
    (1, 'test4'),
    (1, 'test5'),
    (1, 'test6'),
    (1, 'test7'),
    (2, 'test8'),
    (2, 'test9'),
    (2, 'test10'),
    (2, 'test11'),
    (2, 'test12'),
    (2, 'test13'))
, accounts_rn as (select *, row_number() over (partition by id_region) as rn from accounts)
select * from accounts_rn where rn<=2;
...
Рейтинг: 0 / 0
08.12.2014, 13:32
    #38827972
01ssv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать с лимитом по полю?
LeXa NalBat, спасибо! Работает именно так как и хотелось бы - буду вникать в синтаксис и идею запроса
...
Рейтинг: 0 / 0
08.12.2014, 15:14
    #38828133
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать с лимитом по полю?
01ssvLeXa NalBat, спасибо! Работает именно так как и хотелось бы - буду вникать в синтаксис и идею запроса

я очень надеюсь что таблица у вас маленькая ожидается
иначе время выполнения этого запроса будет расти как N*LOG(N) от количества записей в таблице и на миллионе записей это будет весьма небыстро.

--Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
09.12.2014, 09:15
    #38828611
01ssv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выбрать с лимитом по полю?
Да, таблица маленкая - несколько тысяч записей, запрос отрабатывает за 12-45 ms это устраивает
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как выбрать с лимитом по полю? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]