10 Tagesdaten aus täglichen Daten berechnen

Hallo,
kennt jemand eine Möglichkeit, aus Tagesdaten 10-Tagesdaten zu berechnen? Also immer die Durchschnitte vom 01. -10., 11.-20. und 21.-29/30/31 Tag eines Monats zu berechnen und dann bei den 10-Tagesdaten 3 Werte pro Monat abzuspeichern?

Die zeitlichen Daten liegen als Timestamp vor, die Temperaturwerte als double precision, z.B. so:
id | date | temp
10224 | 1949-01-01 00:00:00+01 | 6.3
10224 | 1949-01-02 00:00:00+01 | 5.2
10224 | 1949-01-03 00:00:00+01 | 3.1
10224 | 1949-01-04 00:00:00+01 | 2,0
10224 | 1949-01-05 00:00:00+01 | 4.7

Über die date_trunc Funktion kann man die Daten ja leider nur zu vorgegebenen Intervallen aggregieren… Habe bisher keine passende Lösung gefunden.

Bin für alle Tipps und Ideen dankbar!



test=*# create table monat as select s+1 tag, '2013-10-01'::date + s * '1day'::interval datum, random() val from generate_series(0,30) s;
SELECT 31
Time: 6,439 ms
test=*# select 'dekade 1' as dekade, avg(val) from monat where extract (day from datum) < 10 union select 'dekade 2', avg(val) from monat where extract (day from datum) between 10 and 20 union all select 'dekade 3', avg(val) from monat where extract (day from datum) > 20;
  dekade  |        avg
----------+-------------------
 dekade 1 | 0.541574159016212
 dekade 2 | 0.411747952965512
 dekade 3 | 0.604754556309093
(3 rows)

Das noch so umzuschreiben, daß auch der Monat und das Jahr korrekt behandelt und angezeigt wird überlasse ich Dir zur Übung.