„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie gruppieren Sie Zeitreihen Daten in 5-Minuten-Intervallen mit SQL?

Wie gruppieren Sie Zeitreihen Daten in 5-Minuten-Intervallen mit SQL?

Gepostet am 2025-03-23
Durchsuche:350

How to Group Time-Series Data into 5-Minute Intervals Using SQL?

aggregieren Zeitreinigdaten: 5-minute Intervalle in SQL

Die Analyse von Zeitreihendaten erfordert häufig die Gruppierung von Daten in bestimmte Intervalle. Dieser Leitfaden zeigt, wie Daten mithilfe von SQL in 5-Minuten-Intervalle gruppiert werden, wobei ein Szenario behandelt wird, in dem Daten innerhalb eines definierten Zeitrahmens aggregiert werden müssen. Das Beispiel verwendet Daten aus den Tabellen "Zeit" und "ID", wobei die Ereignisse des Namens "John" gezählt werden. Die Herausforderung liegt darin, von der Gruppierung der einzelnen Zeitstempel zu einer 5-minütigen Intervallaggregation zu wechseln.

Lösungen für verschiedene Datenbanksysteme

Der optimale Ansatz hängt von Ihrem Datenbanksystem ab. Hier sind Lösungen für Postgresql und MySQL:

postgresql

postgresql bietet einen flexiblen Ansatz mit extract ('epoch') , um den Unix -Zeitstempel (Sekunden seit Epoch) und inval :

zu erhalten:
SELECT
    date_trunc('minute', timestamp)   INTERVAL '5 minutes' * (extract(minute from timestamp)::int / 5) AS five_minute_interval,
    name,
    COUNT(b.name)
FROM time a, id b
WHERE ... -- Your WHERE clause here
GROUP BY five_minute_interval, name
ORDER BY five_minute_interval;

Diese Abfrage verkürzt zuerst den Zeitstempel mit Date_Trunc

. Anschließend berechnet es das 5-Minuten-Intervall, indem mehrere 5 Minuten basierend auf der Minute des ursprünglichen Zeitstempels hinzugefügt werden.

mysql

MySQL bietet eine einfachere Lösung mit unix_timestamp ()

und ganzzahliger Abteilung:
SELECT
    FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(timestamp) / 300) * 300) AS five_minute_interval,
    name,
    COUNT(b.name)
FROM time a, id b
WHERE ... -- Your WHERE clause here
GROUP BY five_minute_interval, name
ORDER BY five_minute_interval;

Diese Abfrage wandelt den Zeitstempel in einen Unix -Zeitstempel um, führt eine ganzzahlige Abteilung um 300 (Sekunden in 5 Minuten) durch und wandelt dann das Ergebnis mit von_unixtime ()

.

zu einem Zeitstempel um. Beide Abfragen gruppieren die Ergebnisse nach dem berechneten 5-Minuten-Intervall und dem Namen und liefern die gewünschte aggregierte Ausgabe. Denken Sie daran, ... durch Ihre spezifische wobei Klausel. Die Order by

Klausel sorgt für die chronologische Darstellung der Ergebnisse.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3