powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / select partition
6 сообщений из 6, страница 1 из 1
select partition
    #39210109
Фотография essbase.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как такое записать на PG ?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select userid,
       my_date,
       ...
from
(
select userid,
       my_Date,
       ...
       max(my_date) over (partition by userid) max_my_date
from   users
)
where my_date = max_my_date
...
Рейтинг: 0 / 0
select partition
    #39210180
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
essbase.ru,

Так и записать, вроде синтакс правильный. Единственное "но" — все подзапросы в PG требуют алиаса, который отсутствует.

Есть ещё другой вариант:
Код: sql
1.
2.
3.
4.
SELECT DISTINCT ON (userid, my_date)
    userid, my_date, ...
  FROM users
 ORDER BY userid, my_date DESC, ...;
...
Рейтинг: 0 / 0
select partition
    #39210211
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorov Есть ещё другой вариант:синтакс то есть,
но так как планер (в 9.2, как минимум) не умеет его оптимайзить [Loose indexscan]

то "есть ещё более другой вариант" заката солнца вручную при наличии инда по (user,data)

искать
http://www.sql.ru/forum/882778/bystryy-podschet-distinct-values-po-indeksirovannym-polyam?mid=11326416&hl=low_cardinality#11326416

рихтовать под себя.

если ещё и есть fk на усеров -- то RECURSIVE не нужен -- > выборка по усерам + LATERAL по табле .. LIMIT 1..
...
Рейтинг: 0 / 0
select partition
    #39210220
Фотография essbase.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorovТак и записать, вроде синтакс правильный
похоже вы не поняли запрос

- он выгребает все записи где для userid стоит максимальная дата в разрезе userid
...
Рейтинг: 0 / 0
select partition
    #39210223
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
essbase.ruvyegorovТак и записать, вроде синтакс правильный
похоже вы не поняли запрос

похоже вы не поняли ответ
...
Рейтинг: 0 / 0
select partition
    #39210227
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
essbase.ru,

http://www.postgresql.org/docs/9.5/static/sql-select.html SELECT DISTINCT ON ( expression [, ...] ) keeps only the first row of each set of rows where the given expressions evaluate to equal. The DISTINCT ON expressions are interpreted using the same rules as for ORDER BY (see above). Note that the "first row" of each set is unpredictable unless ORDER BY is used to ensure that the desired row appears first. For example:

SELECT DISTINCT ON (location) location, time, report
FROM weather_reports
ORDER BY location, time DESC;

retrieves the most recent weather report for each location. But if we had not used ORDER BY to force descending order of time values for each location, we'd have gotten a report from an unpredictable time for each location
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / select partition
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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