powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как получить последние уникальные записи по 2 столбцам?
6 сообщений из 6, страница 1 из 1
Как получить последние уникальные записи по 2 столбцам?
    #39661154
manking
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот есть такая таблица:

Код: plaintext
1.
2.
3.
4.
5.
id      page data time 
30005    1    а    13304214124
30005    2    а    13304214124
30006    3         13304214124
30005    1    b    14304214124
30005    2    b    14304214124

Мы знаем id и массив page. Нужно для каждого id и page достать data, но только уникальные последние по столбцу time.

То есть зная что id=30005 и page=1 и 2. Нужно получить эти записи где data равна b
...
Рейтинг: 0 / 0
Как получить последние уникальные записи по 2 столбцам?
    #39661234
ln123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное как то так:
Код: sql
1.
2.
3.
select * from 
(select t.*, rank() over(order by t.time desc) r from t where id = 30005  and page in (1,2)) t
where t.r = 1
...
Рейтинг: 0 / 0
Как получить последние уникальные записи по 2 столбцам?
    #39661290
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
manking,

lateral + order by + limit 2
or 2*lateral + order by + limit 1
...
Рейтинг: 0 / 0
Как получить последние уникальные записи по 2 столбцам?
    #39661410
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
with t1(id, page, data, time)
as (
    values (30005, 1, 'а', 13304214124)
    , (30005, 2, 'а', 13304214124)
    , (30006, 3, '', 13304214124)
    , (30005, 1, 'b', 14304214124)
    , (30005, 2, 'b', 14304214124)
)
select distinct on (id, page) * 
from t1 
where id=30005 and page in (1, 2)
order by id, page, time desc;
...
Рейтинг: 0 / 0
Как получить последние уникальные записи по 2 столбцам?
    #39661414
ursido
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwwqmanking,

lateral + order by + limit 2
or 2*lateral + order by + limit 1

Может, достаточно DISTINCT ON () ?
...
Рейтинг: 0 / 0
Как получить последние уникальные записи по 2 столбцам?
    #39661759
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ursidoqwwqmanking,

lateral + order by + limit 2
or 2*lateral + order by + limit 1

Может, достаточно DISTINCT ON () ?
кхм.
эта приятная фича синтакса не поддержана надлежащими алгоритмами (всё то же что и про луз скан, собсно)

т.ч. с т.з. множеств достаточно. а с практической т.з. -- статистика пгагента пользуется таким запросом, для получения последнего состояния. не обеспечив очистки логов -- ждёте по полчаса. тоже какие-то колхозники писали. и ведь индексом снаружи не запинаешь.

а написали бы педры простой коррелят (лейтералов тогда не было) -- и все бы пиналось одним индексом
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как получить последние уникальные записи по 2 столбцам?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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