Berechnung der kumulierten Summe in PostgreSQL
In der Datenverarbeitung ist es oft notwendig, die kumulative Summe oder laufende Summe eines bestimmten Feldes zu berechnen. In PostgreSQL kann dies einfach mithilfe von Fensterfunktionen erreicht werden.
Einführung in Fensterfunktionen
Mit Fensterfunktionen können Sie Berechnungen für gruppierte Zeilen basierend auf bestimmten Bedingungen durchführen. In diesem Beispiel möchten wir die Zeilen nach circle_id
gruppieren und die kumulative Summe des Felds amount
berechnen.
Abfrage zur Berechnung der kumulierten Summe
Die folgende Abfrage zeigt, wie die kumulative Summe berechnet wird:
<code class="language-sql">SELECT ea_month, id, amount, ea_year, circle_id, sum(amount) OVER (PARTITION BY circle_id ORDER BY ea_year, ea_month) AS cum_amt FROM tbl ORDER BY circle_id, ea_year, ea_month;</code>
In dieser Abfrage:
PARTITION BY
-Klausel gruppiert Zeilen nach circle_id
-Spalte. ORDER BY
-Klausel sortiert die Zeilen in jeder Partition nach ea_year
und ea_month
. OVER
-Klausel definiert ein Fenster, das die sum()
-Funktion auf Zeilen anwendet, beginnend bei jeder Partition bis zur aktuellen Zeile. cum_amt
gespeichert. Verarbeitung von Datums- und Uhrzeitdaten
Wenn Ihre Spalten ea_year
und ea_month
als Zeichenfolgen gespeichert sind, wird die Abfrage alphabetisch statt chronologisch sortiert. Für eine korrekte Sortierung sollten Sie die Konvertierung in einen Datumstyp in Betracht ziehen, bevor Sie die Berechnung durchführen.
Kollegen ausschließen
In PostgreSQL 11 und höher können Sie die Option frame_exclusion
verwenden, um zu steuern, wie Peers in Fensterfunktionen behandelt werden. Dadurch können Sie bestimmte Zeilen in Berechnungen einbeziehen oder ausschließen.
Wenn Sie diese Schritte befolgen, können Sie kumulative Summen in PostgreSQL effizient berechnen und so wertvolle Einblicke in Ihre Daten gewinnen.
Das obige ist der detaillierte Inhalt vonWie berechnet man kumulative Summen in PostgreSQL mithilfe von Fensterfunktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!