Gruppieren Sie Zeitstempel für Zählabfragen in 5-Minuten-Intervallen
Frage:
Eine Abfrage, um die Anzahl der Vorkommen von John in einem bestimmten Zeitraum zu zählen. Das Ergebnis ist jedoch ein nicht gruppierter Zeitstempel und dessen Anzahl. Ziel ist es, die Ergebnisse in 5-Minuten-Intervallen zu gruppieren.
Lösung:
Um Ergebnisse in 5-Minuten-Intervallen zu gruppieren, können Sie MySQL und PostgreSQL mit einer bestimmten Syntax verwenden:
PostgreSQL:
<code class="language-sql">SELECT date_trunc('minute', timestamp) + INTERVAL '5 minutes' * (EXTRACT(MINUTE FROM timestamp)::integer / 5) AS five_minute_interval, name, COUNT(b.name) FROM time a, id WHERE … GROUP BY five_minute_interval, name ORDER BY five_minute_interval;</code>
MySQL:
<code class="language-sql">SELECT FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(timestamp) / 300) * 300) AS five_minute_interval, name, COUNT(b.name) FROM time a, id WHERE … GROUP BY five_minute_interval, name ORDER BY five_minute_interval;</code>
In beiden Abfragen wird die GROUP BY
-Klausel nach dem gerundeten Ergebnis des Zeitstempels geteilt durch 300 gruppiert (was einem 5-Minuten-Intervall entspricht). Dadurch werden effektiv 5-Minuten-Bins für die Zeitstempel erstellt und jeder Zeitstempel dem entsprechenden Bin zugeordnet. PostgreSQL verwendet die Funktion date_trunc
, um das Abschneiden und Gruppieren von Zeitstempeln sauberer zu handhaben, während MySQL die Funktionen FROM_UNIXTIME
und FLOOR
verwendet, um die gleiche Funktionalität zu erreichen.
Ausgabe:
Die Ausgabe zeigt nun Ergebnisse gruppiert nach 5-Minuten-Intervallen und eine entsprechende Anzahl der Vorkommen von John:
<code>five_minute_interval name COUNT(b.name) ------------------------ ---- ------------- 2010-11-16 10:30:00 John 2 2010-11-16 10:35:00 John 10 2010-11-16 10:40:00 John 0 2010-11-16 10:45:00 John 8 2010-11-16 10:50:00 John 0 2010-11-16 10:55:00 John 11</code>
Hinweis: Der Teil WHERE …
im Code muss entsprechend der tatsächlichen Situation durch Ihre Abfragebedingungen ersetzt werden. Um die Lesbarkeit der Ergebnisse sicherzustellen, wird außerdem die ORDER BY five_minute_interval
-Klausel hinzugefügt. Verbesserte SQL-Anweisungen implementieren die Gruppierung in 5-Minuten-Intervallen genauer und vermeiden mögliche Rundungsfehler.
Das obige ist der detaillierte Inhalt vonWie gruppiere ich Zeitstempel für Zählabfragen in 5-Minuten-Intervalle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!