(Postgres 9.1 に) 次のようなテーブルがあるとします。
date | value
そこにはいくつかのギャップがあります(つまり、min(date)とmax(date)の間のすべての可能な日付に行があるわけではありません)。
私の問題は、次のように、各一貫したグループ (ギャップなし) が個別に処理されるように、このデータを集計する方法です。
min_date | max_date | [some aggregate of "value" column]
それを行う方法はありますか?ウィンドウ関数で可能だと思いますが、しばらく試してみるとlag()
、lead()
少し行き詰まりました。
たとえば、データが次のような場合:
date | value
---------------+-------
2011-10-31 | 2
2011-11-01 | 8
2011-11-02 | 10
2012-09-13 | 1
2012-09-14 | 4
2012-09-15 | 5
2012-09-16 | 20
2012-10-30 | 10
出力(sum
集計として)は次のようになります。
min | max | sum
-----------+------------+-------
2011-10-31 | 2011-11-02 | 20
2012-09-13 | 2012-09-16 | 30
2012-10-30 | 2012-10-30 | 10