Messwerte in 5-Minuten - Raster zusammenfassen

Hallo,

ich messe über den Tag verteilt alle 30 Sekunden einen Wert. Diesen Wert trage ich zusammen mit einem Zeitstempel in eine Tabelle ein

Wert (bigint) | Zeitstempel (timestamp)
--------------+-----------------------
10            | 2009-09-02 00:00:30
20            | 2009-09-02 00:01:02
30            | 2009-09-02 00:01:34
40            | 2009-09-02 00:02:07
[...] 

(die Abstände betragen nicht exakt 30 Sekunden, weil der Messvorgang selber auch ein paar Sekunden dauern kann).

Nun will ich die Daten in einem Chart als Linie anzeigen (hier: RMChart)

Über den Tag verteilt kommen mit obigem Messintervall 2880 Messwerte zusammen. Diese möchte ich der Übersichtlichkeit halber mit Hilfe eines geschickten Querys so gruppieren, dass ich die Messwerte in Päckchen à 5 Minuten zusammenfasse.


Wert (bigint)                  | Zeitstempel (timestamp)
-------------------------------+-----------------------
[Wert von 00:00:00 - 00:05:00] | 2009-09-02 00:00:00
[Wert von 00:05:00 - 00:10:00] | 2009-09-02 00:05:00
[Wert von 00:10:00 - 00:15:00] | 2009-09-02 00:10:00
[Wert von 00:15:00 - 00:20:00] | 2009-09-02 00:15:00
[...] 

Meine Frage: Wie geht das? :slight_smile:

Danke im voraus!

Euer DerDa

Okay. sowas ähnliches, das anzupassen überlasse ich Dir zur Übung:

test=*# select * from werte;
         ts          | wert
---------------------+------
 2009-01-01 01:00:00 |   10
 2009-01-01 01:00:29 |   12
 2009-01-01 01:05:10 |   20
 2009-01-01 01:06:36 |   22
(4 Zeilen)

Zeit: 0,265 ms
test=*# select floor(extract(epoch from ts) / 300), avg(wert) from werte group by floor(extract(epoch from ts) / 300) ;
  floor  |         avg
---------+---------------------
 4102560 | 11.0000000000000000
 4102561 | 21.0000000000000000
(2 Zeilen)

Zeit: 0,482 ms
test=*#

Die Intervallgrenze habe ich halt auf 5 Minuten gelegt, wann die Intervalle exakt anfangen und enden kannst ja auch mal ausrechnen …

Andreas

Hallo Andreas,

prima! Klappt bestens. :slight_smile:

Vielen Dank sagt: DerDa