sql >> Database >  >> RDS >> Mysql

Gegevens aggregeren op tijdspanne in MySQL

Ik had een vergelijkbare vraag:stats-statistieken-in-time-chunks verzamelen en had het zeer goed beantwoord. In wezen was het antwoord:

Misschien kunt u de functie DATE_FORMAT() gebruiken en groeperen. Hier is een voorbeeld, hopelijk kunt u het aanpassen aan uw specifieke behoeften.

SELECT
    DATE_FORMAT( time, "%H:%i" ),
    SUM( bytesIn ),
    SUM( bytesOut )
FROM
    stats
WHERE
    time BETWEEN <start> AND <end>
GROUP BY
    DATE_FORMAT( time, "%H:%i" )

Als uw tijdvenster meer dan één dag beslaat en u het voorbeeldformaat gebruikt, worden gegevens van verschillende dagen samengevoegd tot 'uur-van-dag'-buckets. Als de onbewerkte gegevens niet precies op het uur vallen, kunt u deze gladstrijken door "%H:00" te gebruiken.

Met dank aan Martin Clayton voor het antwoord dat hij me gaf.



  1. Database-ontwerp voor het maken van aangepaste formulieren (en opslag van resultaten)

  2. Breek grote verwijderingsbewerkingen in stukken

  3. Limiet voor het uploaden van documenten

  4. Fix Msg 241 "Conversie mislukt bij het converteren van datum en/of tijd van tekenreeks" in SQL Server