Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / select partition / 6 сообщений из 6, страница 1 из 1
07.04.2016, 13:24
    #39210109
essbase.ru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select partition
Как такое записать на 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
07.04.2016, 14:19
    #39210180
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select partition
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
07.04.2016, 14:44
    #39210211
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select partition
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
07.04.2016, 14:49
    #39210220
essbase.ru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select partition
vyegorovТак и записать, вроде синтакс правильный
похоже вы не поняли запрос

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

похоже вы не поняли ответ
...
Рейтинг: 0 / 0
07.04.2016, 14:54
    #39210227
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select partition
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
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / select partition / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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