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;
Du kan GROUP BY
to kolonner:et tidsstempel afkortet til timen og et 5-minutters slot.
Eksemplet producerer slots 0 - 11
. Tilføj 1
hvis du foretrækker 1 - 12
.
Jeg caster resultatet af extract()
til heltal, så divisionen / 5
afkorter brøktal. Resultatet:
minut 0 - 4 -> slot 0
minut 5 - 9 -> slot 1
osv.
Denne forespørgsel returnerer kun værdier for de 5-minutters slots, hvor der findes værdier. Hvis du vil have en værdi for hver slot eller hvis du vil have en løbende sum over 5-minutters slots, overvej dette relaterede svar:
- PostgreSQL:kørende antal rækker for en forespørgsel 'efter minut'