GROUP BY aufeinander folgende Daten durch Lücken begrenzt

8

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

%Vor%

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

Mein Problem ist, wie man diese Daten aggregiert, so dass jede konsistente Gruppe (ohne Lücken) wie folgt behandelt wird:

%Vor%

Irgendwelche Ideen, wie es geht? Ich glaube, das ist mit Fensterfunktionen möglich, aber nach einiger Zeit versuche ich mit lag() und lead() etwas zu hängen.

Zum Beispiel wenn die Daten so sind:

%Vor%

Die Ausgabe (für sum als Aggregat) wäre:

%Vor%     
Michal Podlewski 22.10.2012, 10:51
quelle

2 Antworten

8
%Vor%

Einfachere und billigere Version:

%Vor%

Mein erster Versuch war komplexer und teurer:

%Vor%

Die Ausgabe:

%Vor%     
Clodoaldo Neto 22.10.2012, 13:46
quelle
0

Hier ist ein Weg, es zu lösen.

Erstens, um den Beginn von aufeinanderfolgenden Serien zu erhalten, würde diese Abfrage Ihnen das erste Datum geben:

%Vor%

ebenfalls für das Ende aufeinanderfolgender Serien,

%Vor%

Sie können diese Ansichten erstellen, um Abfragen mit ihnen zu vereinfachen.

Wir brauchen nur den ersten, um Gruppenbereiche zu bilden

%Vor%     
Marlin Pierce 22.10.2012 12:01
quelle