Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :sélectionner une requête, incrément de 5 minutes

Ce qui suit vous donnera un échantillon composé de toutes les données avec un horodatage à :00, :05, :10 ...

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

J'utilise la fonction modulo pour vérifier si la partie minute du temps est (0 ou) divisible par 5.

Si vous n'avez besoin que d'un seul résultat pour chaque segment de temps, nous devons devenir un peu plus complexes.

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

Je n'ai pas accès à une instance MySQL pour le tester pour le moment, mais voici l'idée. Il regroupe toutes les cinq minutes, en regroupant par date, heure et round(minute(time)/5,0)*5 - qui arrondit la minute au 5 le plus proche.

Il sélectionne la valeur de temps autour de laquelle il doit être regroupé, ainsi que les temp_out min, avg et max, car je ne savais pas laquelle de ces valeurs s'appliquerait le mieux à votre situation.

Si, toutefois, votre base de données n'a pas de données pour un tronçon de cinq minutes (ou un tronçon de 30 minutes, si c'est ce que vous utilisez), il se peut qu'il n'y ait toujours pas de données pour un point d'échantillonnage.