Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL:selecione a consulta, incremento de 5 minutos


A seguir, você obterá uma amostra que consiste em qualquer dado com um carimbo de data/hora em :00, :05, :10 ...
SELECT time, temp_out FROM wmr200 WHERE date(time) = curdate()
    AND mod(minute(time),5) = 0

Estou usando a função modulo para verificar se a parte do minuto do tempo é (0 ou) divisível por 5.

Se você precisa de apenas um resultado para cada segmento de tempo, temos que ficar um pouco mais complexos.
SELECT concat(date(time),' ',hour(time),':',round(minute(time)/5,0)*5), 
       min(temp_out), avg(temp_out), max(temp_out) 
FROM wmr200 
GROUP BY date(time), hour(time), round(minute(time)/5,0)*5

Não tenho acesso a uma instância do MySQL para testá-la agora, mas aqui está a ideia. Ele agrupa a cada cinco minutos, agrupando por data, hora e round(minute(time)/5,0)*5 - que arredonda o minuto para o 5 mais próximo.

Ele seleciona o valor de tempo em que deve ser agrupado e o min, avg e max temp_out, pois eu não tinha certeza de qual deles se aplicaria melhor à sua situação.

Se, no entanto, seu banco de dados não tiver dados para um trecho de cinco minutos (ou trecho de 30 minutos, se for o que você estiver usando), ele ainda pode não ter dados para um ponto de amostra.