Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL:seleziona query, incremento di 5 minuti

Di seguito otterrai un campione composto da qualsiasi dato con un timestamp a :00, :05, :10 ...

SELECT time, temp_out FROM wmr200 WHERE date(time) = curdate()
    AND mod(minute(time),5) = 0

Sto usando la funzione modulo per verificare se la parte dei minuti del tempo è (0 o) divisibile per 5.

Se hai bisogno di un solo risultato per ogni segmento di tempo, dobbiamo diventare un po' più complessi.

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

Non ho accesso a un'istanza MySQL per testarla in questo momento, ma ecco l'idea. Raggruppa ogni cinque minuti, raggruppando per data, ora e round(minute(time)/5,0)*5 - che arrotonda il minuto al 5 più vicino.

Seleziona il valore del tempo intorno al quale dovrebbe essere raggruppato e il min, avg e max temp_out, poiché non ero sicuro di quale di questi si sarebbe adattato meglio alla tua situazione.

Se, tuttavia, il tuo DB non ha dati per un'estensione di cinque minuti (o un'estensione di 30 minuti, se è quello che stai utilizzando), potrebbe comunque non avere dati per un punto di campionamento.