PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

date_trunc intervalo de 5 minutos no PostgreSQL

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;

Você pode GROUP BY duas colunas:um carimbo de data/hora truncado para a hora e um intervalo de 5 minutos.

O exemplo produz slots 0 - 11 . Adicionar 1 se preferir 1 - 12 .
Eu converto o resultado de extract() para inteiro, então a divisão / 5 trunca dígitos fracionários. O resultado:
minuto 0 - 4 -> slot 0
minuto 5 - 9 -> slot 1
etc.

Essa consulta retorna apenas valores para os intervalos de 5 minutos em que os valores são encontrados. Se você quiser um valor para cada slot ou se você quiser uma soma corrente mais de 5 minutos, considere esta resposta relacionada:
  • PostgreSQL:contagem de linhas em execução para uma consulta 'por minuto'