簡體   English   中英

Postgres窗口函數-bigint的rank()分區

[英]Postgres window functions - rank() partition by bigint

我正在嘗試按類型為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

有人能幫助我嗎?

提前致謝...

您似乎想要:

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

serial_no是唯一的(至少在您提供的數據中)。 如果按唯一列進行分區,則rank()始終為1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM