2016-02-11 56 views
0

我只有一列datetime類型的表。而且我每天都有很多活動。PostgreSQL窗口函數:連續多天的事件序號#

要獲取所有事件,只需SELECT date FROM table;

如何在每一行上添加一個序列號,以便每一天的第一行是1,第二行是2,等等,重新設置第二天的序列號?

我正在尋找一個使用PostgreSQL窗口函數的解決方案。

+1

請添加基於一些樣本數據和預期輸出數據(請格式化文本,無屏幕截圖) –

回答

0

首先創建虛擬日期(應問題的避風港了一部分):

CREATE TABLE "table" 
(
    date timestamp with time zone 
); 

insert into "table"(date) 
select now()+(x*23||'minutes')::interval 
from generate_series(1, 100) as x; 

然後查詢所有行包​​括反:

select date, row_number() over (partition by date_trunc('day', date)) 
from "table"