Heim > Datenbank > MySQL-Tutorial > Wie gruppiere ich Zeitstempel für Zählabfragen in 5-Minuten-Intervalle?

Wie gruppiere ich Zeitstempel für Zählabfragen in 5-Minuten-Intervalle?

Linda Hamilton
Freigeben: 2025-01-15 08:15:45
Original
800 Leute haben es durchsucht

How to Group Timestamps into 5-Minute Intervals for Count Queries?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage