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
två kolumner:en tidsstämpel trunkerad till timmen och en 5-minuterslucka.
Exemplet producerar platser 0 - 11
. Lägg till 1
om du föredrar 1 - 12
.
Jag castar resultatet av extract()
till heltal, så divisionen / 5
trunkerar bråksiffror. Resultatet:
minut 0 - 4 -> lucka 0
minut 5 - 9 -> lucka 1
osv.
Den här frågan returnerar endast värden för de 5-minutersplatser där värden finns. Om du vill ha ett värde för varje slot eller om du vill ha en löpande summa över 5-minuterstider, överväg detta relaterade svar:
- PostgreSQL:löpande antal rader för en fråga "per minut"