Heim >Datenbank >MySQL-Tutorial >Wie berechnet man die kumulative Summe in PostgreSQL mithilfe von Fensterfunktionen?
Kumulative Summe in PostgreSQL berechnen
In der PostgreSQL-Datenbank können Sie Fensterfunktionen verwenden, um die kumulative Summe (oder laufende Summe) von Feldern aus der temporären Tabelle zu berechnen und die Ergebnisse in die Zieltabelle zu übertragen. Fensterfunktionen ermöglichen die Durchführung von Berechnungen basierend auf einer Reihe von Zeilen in einer Partition, in diesem Fall einer Partition, die basierend auf der Spalte circle_id
erstellt wurde.
Syntax der Fensterfunktion
Die hier verwendete Fensterfunktionssyntax lautet wie folgt:
<code class="language-sql">sum(amount) OVER (PARTITION BY circle_id ORDER BY ea_year, ea_month) AS cum_amt</code>
Diese Fensterfunktion unterteilt nach circle_id
Spalte, was bedeutet, dass die kumulative Summe für jede circle_id
separat berechnet wird. Innerhalb jeder Partition werden die Zeilen nach den Spalten ea_year
und ea_month
sortiert, wodurch sichergestellt wird, dass die kumulative Summe für jeden circle
Monat vom frühesten zum spätesten berechnet wird.
Beispielabfrage
Basierend auf der bereitgestellten Tabellenstruktur generiert die folgende Abfrage die erforderlichen Ergebnisse:
<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>
Beschreibung
Diese Abfrage extrahiert die relevanten Spalten aus der Tabelle tbl
und berechnet die kumulative Summe für jedes circle_id
. Die OVER
-Klausel gibt die Partitionierung und Reihenfolge der Fensterfunktionen an und stellt sicher, dass die kumulative Summe für jedes circle
korrekt berechnet wird.
Wichtiger Hinweis
OVER
ORDER BY
-Klausel ist entscheidend, um das gewünschte Ergebnis zu erzielen. ORDER BY
-Klausel verwenden. Wenn Sie jedoch eine Zeichenfolgendarstellung des Monats verwenden, müssen Sie möglicherweise die Funktion to_date()
verwenden, um ihn in einen Datumswert umzuwandeln. cum_amt
-Spalte in der Zieltabelle enthält die kumulative Summe der amount
-Spalte, partitioniert nach circle_id
und sortiert nach ea_year
und ea_month
. Das obige ist der detaillierte Inhalt vonWie berechnet man die kumulative Summe in PostgreSQL mithilfe von Fensterfunktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!