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;
Potresti GROUP BY
due colonne:un timestamp troncato all'ora e uno slot di 5 minuti.
L'esempio produce slot 0 - 11
. Aggiungi 1
se preferisci 1 - 12
.
Ho lanciato il risultato di extract()
a intero, quindi la divisione / 5
tronca le cifre frazionarie. Il risultato:
minuto 0 - 4 -> fascia oraria 0
minuto 5 - 9 -> fascia oraria 1
ecc.
Questa query restituisce solo valori per quegli slot di 5 minuti in cui vengono trovati i valori. Se vuoi un valore per ogni slot o se vuoi una somma corrente su slot di 5 minuti, considera questa risposta correlata:
- PostgreSQL:conteggio in esecuzione delle righe per una query 'per minuto'