Оконные функции Postgres - rank () раздел по bigint - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь ранжировать данные по разделу по столбцу, тип которого bigint, но он не работает, когда я изменяю столбец в разделе на столбец типа timestamp с часовым поясом, в котором он работает.

Мой запрос выглядит так:

select id,ts_insert,serial_no,rank() over (partition by serial_no order by serial_no desc) from schema.table_name

Результат выглядит так:

1,'2019-02-19 18:27:50.258846+11',19516,1
1,'2019-02-19 18:27:50.258846+11',19515,1
1,'2019-02-19 18:27:50.258846+11',19514,1
1,'2019-02-06 19:45:38.896062+11',15069,1
1,'2019-02-05 21:46:28.633325+11',14827,1

Ожидаемый результат:

1,'2019-02-19 18:27:50.258846+11',19516,1
1,'2019-02-19 18:27:50.258846+11',19515,2
1,'2019-02-19 18:27:50.258846+11',19514,3
1,'2019-02-06 19:45:38.896062+11',15069,4
1,'2019-02-05 21:46:28.633325+11',14827,5

Может кто-нибудь мне помочьпожалуйста?

Заранее спасибо ...

1 Ответ

0 голосов
/ 08 марта 2019

Вы, кажется, хотите:

select id, ts_insert, serial_no,
       rank() over (partition by id order by serial_no desc)
from schema.table_name;

serial_no уникально (по крайней мере, в предоставленных вами данных). Если вы разделите по уникальному столбцу, то rank() всегда будет 1.

...