注意:在PostgreSQL 9.4如何在PostgreSQL的一天中創建一個顯示「出現次數」的僞列?
比方說,我有一個這樣的表:
- 列
project_name
:文本,而不是空; - 列
date
:沒有時區的時間戳,不爲空; - 列
uuid
:UUID,not null; - 所有三列的唯一索引。
比方說,對於一個給定project_name
,有幾個date
發生在同一天。例如:
uuid | project_name | analysis_date
-------------|------------------------------------
uuid-1-here | MY_PROJECT | 2016-02-22 10:00:00
uuid-2-here | MY_PROJECT | 2016-02-22 10:20:00
uuid-3-here | MY_PROJECT | 2016-02-24 13:12:00
而這個圖形可重複:我可以有幾個分析了,說2月23日,一月十二日,二零一五年十二月三十零日,等等等等
我想獲得像輸出這樣的:
uuid | project_name | analysis_day | occurrence
-------------|------------------------------------------
uuid-1-here | MY_PROJECT | 2016-02-22 | 1
uuid-2-here | MY_PROJECT | 2016-02-22 | 2
uuid-3-here | MY_PROJECT | 2016-02-24 | 1
也就是說,每個天,有僞列occurrence
表明發生當天分析號碼 - 每一天。
好的,所以,格式爲analysis_day
我可以管理;但我沒有絲毫的想法如何生成occurrence
列:(
我的第一讀書告訴我,我應該使用某種PARTITION
,但這是SQL的一部分,完全沒有我,並且那doesn 「T幫助也許分區是在這裏甚至沒有解決
我怎樣才能實現上述
使用分析函數,例如從tableName窗口函數中選擇uuid,project_name,analysis_day,row_number()over(由project_name劃分的分區,由uuid分析的order_order)。非常酷和強大的東西! – xQbert
嘗試使用'row_number()over(partition by project_name,analysis_day ORDER BY uuid)作爲發生' – krokodilko