PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

date_trunc 5-Minuten-Intervall in PostgreSQL

SELECT date_trunc('hour', date1) AS hour_stump
     , (extract(minute FROM date1)::int / 5) AS min5_slot
     , count(*)
FROM   table1
GROUP  BY 1, 2
ORDER  BY 1, 2;

Sie könnten GROUP BY verwenden zwei Spalten:ein auf die Stunde verkürzter Zeitstempel und ein 5-Minuten-Slot.

Das Beispiel erzeugt die Slots 0 - 11 . Fügen Sie 1 hinzu wenn Sie 1 - 12 bevorzugen .
Ich übertrage das Ergebnis von extract() ganzzahlig, also die Division / 5 kürzt Nachkommastellen. Das Ergebnis:
Minute 0 - 4 -> Slot 0
Minute 5 - 9 -> Slot 1
etc.

Diese Abfrage gibt nur Werte für die 5-Minuten-Slots zurück, in denen Werte gefunden werden. Wenn Sie einen Wert für jeder wollen Slot oder wenn Sie eine laufende Summe wollen über 5-Minuten-Slots, beachten Sie diese verwandte Antwort:

  • PostgreSQL:Laufende Anzahl von Zeilen für eine Abfrage 'pro Minute'