Heim > Datenbank > MySQL-Tutorial > Wie berechnet man die kumulative Summe in PostgreSQL mithilfe von Fensterfunktionen?

Wie berechnet man die kumulative Summe in PostgreSQL mithilfe von Fensterfunktionen?

Barbara Streisand
Freigeben: 2025-01-12 17:39:44
Original
1009 Leute haben es durchsucht

How to Calculate Cumulative Sum in PostgreSQL Using Window Functions?

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:

sum(amount) OVER (PARTITION BY circle_id ORDER BY ea_year, ea_month) AS cum_amt
Nach dem Login kopieren

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:

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

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

    Die Reihenfolge der
  • -Klauseln innerhalb der OVERORDER BY-Klausel ist entscheidend, um das gewünschte Ergebnis zu erzielen.
  • Wenn die Tabelle Datumswerte speichert, können Sie diese direkt in der 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.
  • Die resultierende 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!

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