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
Freigeben: 2025-01-19 00:52:09
Original
675 Leute haben es durchsucht

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

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

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

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!

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