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;
Podrías GROUP BY
dos columnas:una marca de tiempo truncada a la hora y un intervalo de 5 minutos.
El ejemplo produce ranuras 0 - 11
. Añadir 1
si prefiere 1 - 12
.
Lanzo el resultado de extract()
a entero, por lo que la división / 5
trunca dígitos fraccionarios. El resultado:
minuto 0 - 4 -> intervalo 0
minuto 5 - 9 -> intervalo 1
etc.
Esta consulta solo devuelve valores para esos intervalos de 5 minutos donde se encuentran valores. Si desea un valor para cada tragamonedas o si desea una suma corriente más de 5 minutos, considere esta respuesta relacionada:
- PostgreSQL:conteo continuo de filas para una consulta 'por minuto'