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