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'