Kumulative Summe mithilfe der Fensterfunktion in PostgreSQL berechnen
Frage:
Sie haben eine Staging-Tabelle, die Finanzdaten und kumulative Beträge enthält, die in die Zieltabelle eingefügt werden müssen. Die Staging-Tabellenstruktur enthält die folgenden Spalten:
ea_month
: Monat id
: eindeutige Kennung amount
: Transaktionsbetragea_year
: Jahr circle_id
: Transaktionsbezogene Kreise Die Zieltabelle sollte eine zusätzliche Spalte cum_amt
enthalten, die die kumulative Summe der Beträge für jede Zeile widerspiegelt.
Lösung:
Zu diesem Zweck können Sie die Fensterfunktionsfunktion von PostgreSQL verwenden, mit der Sie Berechnungen für einen Bereich von Zeilen durchführen können. Insbesondere können Sie die OVER
-Klausel verwenden, um eine Aggregatfunktion innerhalb eines definierten Fensters anzuwenden (in diesem Fall SUM
):
<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 circle_id
: Teilen Sie die Daten basierend auf circle_id
in Gruppen ein und stellen Sie sicher, dass die kumulative Summe für jeden Kreis separat berechnet wird. ORDER BY ea_year, ea_month
: Gibt die Sortierreihenfolge innerhalb jeder Partition an und stellt sicher, dass die kumulative Summe in chronologischer Reihenfolge berechnet wird. cum_amt
: Der Ausdruck aggregationSUM
berechnet die kumulative Summe jeder Zeile unter Berücksichtigung aller Zeilen vom Beginn der Partition bis zur aktuellen Zeile. HINWEIS: Stellen Sie sicher, dass Ihre Tabellenpaare (circle_id
, ea_year
, ea_month
) über eindeutige Indizes verfügen, um eine korrekte Gruppierung der Berechnungen zu gewährleisten. Dadurch wird sichergestellt, dass Zeilen mit demselben circle_id
, ea_year
und ea_month
immer zusammen in sortierter Reihenfolge angezeigt werden.
Durch die Verwendung der Fensterfunktionstechnik können Sie die kumulative Summe jeder Zeile effizient berechnen und in die Zieltabelle einfügen.
Das obige ist der detaillierte Inhalt vonWie kann ich kumulative Summen in PostgreSQL mithilfe von Fensterfunktionen berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!