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"