こんなテーブルがありますが、
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
特定の event_id 間の時間間隔を見つけることができるように、ラグ関数だけでなくグループ化も適用したいと思います。
私はこのようなものが欲しいです:
SELECT event_id, difference
FROM (
SELECT event_id, date - lag(date) over (order by date) as
difference FROM table GROUP BY event_id
) t;
ただし、LAG関数でGROUP BYを使用することはできません。次のような結果が必要です。
63116743, {120, 60}
60894420, {60}
...
...
そのため、最初の ID のイベント間に 120 秒と 60 秒のウィンドウがあり、2 番目の ID のイベント間に 60 秒のウィンドウがありました。
これを行う方法はありますか?最終的に配列に入れることができる限り、出力形式はあまり重要ではありません。Postgres 9.1 を使用しています