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;
Możesz GROUP BY
dwie kolumny:sygnatura czasowa skrócona do godziny i 5-minutowy przedział czasu.
Przykład tworzy sloty 0 - 11
. Dodaj 1
jeśli wolisz 1 - 12
.
Oddaję wynik extract()
na liczbę całkowitą, więc dzielenie / 5
obcina cyfry ułamkowe. Wynik:
minuta 0 - 4 -> slot 0
minuta 5 - 9 -> slot 1
itd.
To zapytanie zwraca tylko wartości dla tych 5-minutowych przedziałów, w których znaleziono wartości. Jeśli chcesz mieć wartość dla każdego slot lub jeśli chcesz sumę bieżącą ponad 5-minutowe przedziały czasu, rozważ powiązaną odpowiedź:
- PostgreSQL:liczenie wierszy dla zapytania „po minucie”