sql >> Database >  >> RDS >> Mysql

MySQL:selecteer zoekopdracht, in stappen van 5 minuten

Het volgende geeft u een voorbeeld dat bestaat uit alle gegevens met een tijdstempel op :00, :05, :10 ...

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

Ik gebruik de modulo-functie om te controleren of het minuutgedeelte van de tijd (0 of) deelbaar is door 5.

Als u slechts één resultaat voor elk tijdsegment nodig heeft, moeten we een stuk ingewikkelder worden.

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

Ik heb momenteel geen toegang tot een MySQL-instantie om het uit te testen, maar dit is het idee. Het groepeert elke vijf minuten, door te groeperen op datum, uur en round(minute(time)/5,0)*5 - die de minuut afrondt op de dichtstbijzijnde 5.

Het selecteert de waarde van de tijd waar het rond gegroepeerd moet worden, en de min, avg en max temp_out, omdat ik niet zeker wist welke van deze het beste op uw situatie van toepassing zou zijn.

Als uw database echter geen gegevens heeft voor een rek van vijf minuten (of 30 minuten als u dat gebruikt), heeft het mogelijk nog steeds geen gegevens voor een monsterpunt.



  1. Sessies opslaan in DB-tabel werkt niet (met Zend_Session_SaveHandler_DbTable)

  2. Kopieer gegevens naar een nieuwe tabel in MySQL

  3. Hoe kan ik gegevens invoeren in een niet-Engelse taal (Bangla) in deze databasetabel?

  4. Mysql reguliere expressie zoeken zonder herhalende tekens