GROUP BY последовательные даты, разделенные пробелами
Предположим, у вас есть (в 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