GROUP BY aufeinanderfolgende Daten, die durch Lücken begrenzt sind

Angenommen, Sie haben (in Postgres 9.1) eine Tabelle wie die folgende:

date | value 

die einige Lücken haben (ich meine: nicht jedes mögliche Datum zwischen min (Datum) und max (Datum) hat seine Zeile).

Mein Problem besteht darin, diese Daten so zu aggregieren, dass jede konsistente Gruppe (ohne Lücken) separat behandelt wird:

min_date | max_date | [some aggregate of "value" column] 

Irgendwelche Ideen, wie es geht? Ich glaube, es ist mit Fensterfunktionen möglich, aber nach einer Weile mit zu versuchenlag() undlead() Ich stecke ein bisschen fest.

Zum Beispiel, wenn die Daten so sind:

 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  

die Ausgabe (fürsum als Aggregat) wäre:

   min     |    max     |  sum  
-----------+------------+-------  
2011-10-31 | 2011-11-02 |  20  
2012-09-13 | 2012-09-16 |  30  
2012-10-30 | 2012-10-30 |  10  

Antworten auf die Frage(2)

Ihre Antwort auf die Frage