Postgres Gruppe von timestamp in 6-stündlichen Eimer
Habe ich die folgende einfache Tabelle:
ID TIMESTAMP VALUE
4 2011-05-27 15:50:04 1253
5 2011-05-27 15:55:02 1304
6 2011-05-27 16:00:02 1322
7 2011-05-27 16:05:01 1364
Möchte ich den Durchschnitt der VALUES
, und GROUP
jeder TIMESTAMP
Tag in 6-stündlichen Eimer. e.g 00:00 bis 06:00, 06:00-12:00, 12:00-18:00 Uhr & 18:00 bis 00:00 Uhr.
Ich bin in der Lage zu group by Jahr, Monat, Tag & die Stunde mithilfe der folgenden Abfrage:
select avg(VALUE),
EXTRACT(year from TIMESTAMP) AS year,
EXTRACT(month from TIMESTAMP) AS month,
EXTRACT(day from TIMESTAMP) as day
from TABLE
group by year,month,day
Aber ich bin nicht in der Lage, um die Gruppe jeden Tag in 4 Perioden, wie oben definiert, jede Hilfe ist herzlich willkommen.
- Werfen Sie einen Blick auf generate_series. Siehe meine Fiedel im sqlfiddle.com/#!15/c2089/2.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass die Gruppierung der ganzzahlige Wert des Quotienten des (Stunde des timestamp /6) sollte helfen. Probieren Sie es aus und sehen, ob es hilft.
Deiner Gruppe sollte so etwas wie
Die Logik hinter diesem ist, dass, wenn der Stunden-Teil des Datums wird durch 6 geteilt, die int-Werte können nur
Gruppierung mit dieser sollten Ihre Daten in 4 Gruppen pro Tag, das ist, was Sie brauchen.