GRUPA WEDŁUG kolejnych dat ograniczonych lukami
Załóżmy, że masz (w Postgresie 9.1) taką tabelę:
date | value
które mają w sobie kilka luk (mam na myśli: nie każda możliwa data między min (data) a max (data) ma swój wiersz).
Mój problem polega na tym, jak agregować te dane, aby każda spójna grupa (bez luk) była traktowana oddzielnie, tak:
min_date | max_date | [some aggregate of "value" column]
Jakieś pomysły, jak to zrobić? Wierzę, że jest to możliwe dzięki funkcjom okna, ale po pewnym czasie próbylag()
ilead()
Jestem trochę utknięty.
Na przykład, jeśli dane są takie:
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
wyjście (dlasum
jako agregat) byłoby:
min | max | sum
-----------+------------+-------
2011-10-31 | 2011-11-02 | 20
2012-09-13 | 2012-09-16 | 30
2012-10-30 | 2012-10-30 | 10