Angenommen, ich habe diese Tabelle:Fensterfunktionen und „local“ Aggregation
select * from window_test;
k | v
---+---
a | 1
a | 2
b | 3
a | 4
Letztlich möchte ich erhalten:
k | min_v | max_v
---+-------+-------
a | 1 | 2
b | 3 | 3
a | 4 | 4
Aber ich würde genauso glücklich sein, dies zu bekommen (da ich kann es leicht filtern mit distinct
):
k | min_v | max_v
---+-------+-------
a | 1 | 2
a | 1 | 2
b | 3 | 3
a | 4 | 4
Ist es möglich, 9.1+ Fenster func dies mit PostgreSQL zu erreichen tionen? Ich versuche zu verstehen, ob ich es schaffen kann, in diesem Beispiel eine separate Partition für das erste und letzte Vorkommen von k=a
zu verwenden (geordnet nach v
).
Erstens: Möchten Sie komplette Bereiche "zusammenbrechen"? I.e. Was würden Sie erwarten, wenn Sie '(a, 5), (a, 6), (a, 7)' zu Ihrem Datensatz hinzufügen? Zweitens: Ist 'v' immer perfekt um 1 zu erhöhen oder können Lücken auftreten? –
@ A.H. 'v' ist nicht perfekt ansteigend (tatsächlich ist es ein Zeitstempel). Ja, ich möchte komplette Bereiche ausblenden und würde '(a, 4, 5)' als letztes Tupel nach dem Einfügen von '(a, 5)' erwarten. –
@KonradGarus, funktioniert eine der bereitgestellten Lösungen für Sie? – vyegorov