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;
Je zou kunnen GROUP BY
twee kolommen:een tijdstempel afgekapt op het uur en een slot van 5 minuten.
Het voorbeeld produceert slots 0 - 11
. Voeg 1
toe als je liever 1 - 12
.
Ik cast het resultaat van extract()
naar geheel getal, dus de deling / 5
kapt fractionele cijfers af. Het resultaat:
minuut 0 - 4 -> slot 0
minuut 5 - 9 -> slot 1
etc.
Deze query retourneert alleen waarden voor die perioden van 5 minuten waarin waarden worden gevonden. Als u een waarde wilt voor elke slot of als je een lopende som . wilt meer dan 5 minuten, overweeg dan dit gerelateerde antwoord:
- PostgreSQL:lopende telling van rijen voor een zoekopdracht 'per minuut'