Si supponga di avere (in Postgres 9.1) una tabella come questa:GROUP BY date consecutive delimitati da spazi vuoti
date | value
che hanno alcune lacune in esso (voglio dire: non ogni possibile data tra min (data) e max (data) ha la sua riga).
Il mio problema è come aggregare questi dati in modo che ogni gruppo consistente (senza lacune) viene trattato separatamente, in questo modo:
min_date | max_date | [some aggregate of "value" column]
Delle idee come farlo? Credo che sia possibile con le funzioni della finestra, ma dopo un po 'provando con lag()
e lead()
sono un po' bloccato.
Per esempio, se i dati sono simili:
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
l'uscita (per sum
come aggregato) sarebbe:
min | max | sum
-----------+------------+-------
2011-10-31 | 2011-11-02 | 20
2012-09-13 | 2012-09-16 | 30
2012-10-30 | 2012-10-30 | 10
Dati di post e output desiderato –
Clodoaldo, grazie per il vostro interesse. ad esempio se i dati sono in questo modo: data \t | valore --------------- + ------- 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 l'uscita (per "somma" come aggregato) sarebbe: min | max | sum ----------- + ------------ + ------- 2011-10-31 | 2011-11-02 | 20 2012-09-13 | 2012-09-16 | 30 2012-10-30 | 2012-10-30 | 10 –
La parola che stai cercando è * consecutiva *. Vedi [questa risposta] (http://stackoverflow.com/a/8015107/398670). –