Heim > Datenbank > MySQL-Tutorial > Wie kann ich kumulative Summen in PostgreSQL mithilfe von Fensterfunktionen berechnen?

Wie kann ich kumulative Summen in PostgreSQL mithilfe von Fensterfunktionen berechnen?

Mary-Kate Olsen
Freigeben: 2025-01-12 17:23:45
Original
194 Leute haben es durchsucht

How Can I Calculate Cumulative Sums in PostgreSQL Using Window Functions?

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: Transaktionsbetrag
  • ea_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>
Nach dem Login kopieren

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!

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