Heim >Datenbank >MySQL-Tutorial >Wie berechnet man in PostgreSQL eine laufende Zeilenanzahl pro Minute?
PostgreSQL: Anzahl der Abfrageergebniszeilen pro Minute zählen
In diesem Artikel wird beschrieben, wie Sie Fensterfunktionen in PostgreSQL verwenden, um die Anzahl der laufenden Zeilen von Abfrageergebnissen pro Minute zu berechnen.
1. Anzahl der Zeilen pro Minute
Die folgende Abfrage gibt die Anzahl der Zeilen pro Minute zurück:
<code class="language-sql">SELECT COUNT(id) AS count, EXTRACT(hour FROM "when") AS hour, EXTRACT(minute FROM "when") AS minute FROM mytable GROUP BY hour, minute;</code>
2. Kumulierte Anzahl von Zeilen pro Minute
Um die kumulative Anzahl von Zeilen pro Minute zu berechnen, können Sie die folgende Abfrage verwenden:
<code class="language-sql">SELECT DISTINCT date_trunc('minute', "when") AS minute, COUNT(*) OVER (ORDER BY date_trunc('minute', "when")) AS running_count FROM mytable ORDER BY minute;</code>
Anleitung:
date_trunc('minute', "when")
Kürzung der Zeitstempelspalte „wann“ auf die nächste Minute. COUNT(*) OVER (ORDER BY date_trunc('minute', "when"))
Zählt die Anzahl der pro Minute ausgeführten Zeilen. Die ORDER BY
-Klausel gibt die Reihenfolge der aggregierten Zeilen an. DISTINCT
wird verwendet, um sicherzustellen, dass nur eindeutige Minuten zurückgegeben werden. Dies liegt daran, dass die Aggregatfunktion COUNT
mehrere Zeilen für dieselbe Minute zurückgibt. 3. Einschließlich Minuten ohne Aktivität
Wenn Sie Minuten ohne Aktivität in die Ergebnisse einbeziehen möchten, können Sie die folgende Abfrage verwenden:
<code class="language-sql">SELECT m.minute, COALESCE(SUM(c.minute_count) OVER (ORDER BY m.minute), 0) AS running_count FROM ( SELECT generate_series(MIN(minute), MAX(minute), INTERVAL '1 minute') AS minute FROM ( SELECT date_trunc('minute', "when") AS minute, COUNT(*) AS minute_count FROM mytable GROUP BY minute ) AS sub ) AS m LEFT JOIN ( SELECT date_trunc('minute', "when") AS minute, COUNT(*) AS minute_count FROM mytable GROUP BY minute ) AS c ON m.minute = c.minute ORDER BY m.minute;</code>
Anleitung:
LEFT JOIN
, um Minuten ohne Aktivität einzubeziehen. generate_series()
Die Funktion generiert einen Minutenbereich zwischen den minimalen und maximalen Minuten in der Tabelle. COALESCE()
stellt sicher, dass Minuten ohne Aktivität den laufenden Zählerstand 0 haben. Das obige ist der detaillierte Inhalt vonWie berechnet man in PostgreSQL eine laufende Zeilenanzahl pro Minute?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!