我有一個表像這樣,LAG功能和GROUP BY
event_id | date
----------+------------------------
1703702 | 2013-06-25 07:50:57-04
3197588 | 2013-06-25 07:51:57-04
60894420 | 2013-06-25 07:52:57-04
60894420 | 2013-06-25 07:53:57-04
183503 | 2013-06-25 07:54:57-04
63116743 | 2013-06-25 07:55:57-04
63110451 | 2013-06-25 07:56:57-04
63116743 | 2013-06-25 07:57:57-04
63116743 | 2013-06-25 07:58:57-04
我想用這樣我就可以找到任何特定事項標識之間的時間間隔應用滯後功能,而且一個組。
我想是這樣的:
SELECT event_id, difference
FROM (
SELECT event_id, date - lag(date) over (order by date) as
difference FROM table GROUP BY event_id
) t;
我卻無法使用GROUP BY與LAG功能。我想類似下面這樣的結果:
63116743, {120, 60}
60894420, {60}
...
...
因此就出現了60年代的窗口,第二ID爲第一ID的事件之間的120秒和60秒的窗口,和。
有沒有辦法做到這一點?輸出格式不是太重要,只要我可以把它放到數組中。我正在使用Postgres 9.1
對不起,但我不明白輸出的意思。 120? 60?什麼?它似乎不是來自你展示的數據。 – 2013-06-25 15:55:28
在你的問題中的子選擇沒有添加任何東西到查詢 - 你有效地從它做一個'SELECT *',這就像運行內部查詢一樣。 – IMSoP
@depesz \t這是一段以秒爲單位的間隔:在'2013-06-25 07:55:57-04'和'2013-06-25 07:57:57-04'之間的120秒,然後是60秒到'2013 -06-25 07:58:57-04',只比較具有相同ID的事件。 – IMSoP