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

MySQL:vælg forespørgsel, 5 minutters intervaller

Følgende vil give dig en prøve bestående af alle data med et tidsstempel på :00, :05, :10 ...

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

Jeg bruger modulo-funktionen til at kontrollere, om minutdelen af ​​tiden er (0 eller) delelig med 5.

Hvis du kun har brug for ét resultat for hvert tidssegment, er vi nødt til at blive en del mere komplekse.

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

Jeg har ikke adgang til en MySQL-instans til at teste den lige nu, men her er ideen. Den grupperer efter hvert femte minut, ved at gruppere efter dato, time og round(minute(time)/5,0)*5 - som runder minut til nærmeste 5.

Den vælger værdien af ​​tid, som den skal grupperes omkring, og min, avg og max temp_out, da jeg ikke var sikker på, hvilken af ​​disse der ville passe bedst til din situation.

Hvis din DB imidlertid ikke har data for en strækning på fem minutter (eller 30 minutters strækning, hvis det er det, du bruger), har den muligvis stadig ikke data for et prøvepunkt.



  1. MySQL dumpe i CSV-tekstfiler med kolonnenavne øverst?

  2. Enkelt citat, dobbelt citat og backticks i MySQL-forespørgsler

  3. MySQL langsom forespørgselslog logføring af hurtige forespørgsler

  4. databasekodningsproblem? Dobbelte og enkelte anførselstegn vises med spørgsmålstegn