Heim >Datenbank >MySQL-Tutorial >Wie berechnet man eine laufende Summe der Zeilen pro Minute in PostgreSQL?

Wie berechnet man eine laufende Summe der Zeilen pro Minute in PostgreSQL?

Susan Sarandon
Susan SarandonOriginal
2025-01-19 00:52:09625Durchsuche

How to Calculate a Running Total of Rows per Minute in PostgreSQL?

PostgreSQL: Laufende Gesamtzahl der Abfragezeilen pro Minute

Problemübersicht

Sie müssen die Gesamtzahl der Zeilen pro Minute bis zu diesem bestimmten Zeitpunkt abrufen.

Der beste Weg, Gesamtsummen zu berechnen

<code class="language-sql">SELECT DISTINCT date_trunc('minute', "when") AS minute,
       count(*) OVER (ORDER BY date_trunc('minute', "when")) AS running_ct
FROM   mytable
ORDER  BY 1;</code>

Diese Abfrage verwendet die Funktion date_trunc(), um nur den Minutenteil des „Wann“-Felds zu extrahieren. Die über diese abgeschnittene Minutenkomponente als Fensterfunktion aggregierte Funktion count() liefert die laufende Summe.

Der schnellste Weg

<code class="language-sql">SELECT minute, sum(minute_ct) OVER (ORDER BY minute) AS running_ct
FROM  (
   SELECT date_trunc('minute', "when") AS minute,
          count(*) AS minute_ct
   FROM   tbl
   GROUP  BY 1
   ) sub
ORDER  BY 1;</code>

Diese Abfrage wird in Unterabfragen zusammengefasst, um die Anzahl der Zeilen pro Minute zu berechnen. Anschließend wird mithilfe einer Fensterfunktion eine laufende Summe berechnet.

Verwalten Sie Minuten der Inaktivität

Damit jede Minute gezählt wird, auch ohne Aktivität:

<code class="language-sql">SELECT m.minute,
       COALESCE(sum(c.minute_ct) OVER (ORDER BY m.minute), 0) AS running_ct
FROM  (
   SELECT generate_series(date_trunc('minute', min("when")),
                          max("when"),
                          interval '1 min')
   FROM   tbl
   ) m(minute)
LEFT   JOIN (
   SELECT date_trunc('minute', "when") AS minute,
          count(*) AS minute_ct
   FROM   tbl
   GROUP  BY 1
   ) c USING (minute)
ORDER  BY 1;</code>

Diese Abfrage verwendet generate_series(), um für jede Minute im Bereich eine Zeile zu erstellen, und LEFT JOIN, um die Zeilen in der Basistabelle zu zählen und zusammenzufassen.

Das obige ist der detaillierte Inhalt vonWie berechnet man eine laufende Summe der Zeilen pro Minute in PostgreSQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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