Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengira Jumlah Terkumpul dalam PostgreSQL Menggunakan Fungsi Tetingkap?

Bagaimana untuk Mengira Jumlah Terkumpul dalam PostgreSQL Menggunakan Fungsi Tetingkap?

Barbara Streisand
Barbara Streisandasal
2025-01-12 17:39:44953semak imbas

How to Calculate Cumulative Sum in PostgreSQL Using Window Functions?

Kira jumlah terkumpul dalam PostgreSQL

Dalam pangkalan data PostgreSQL, anda boleh menggunakan fungsi tetingkap untuk mengira jumlah kumulatif (atau jumlah berjalan) medan daripada jadual sementara dan memindahkan keputusan ke jadual sasaran. Fungsi tetingkap membenarkan pengiraan dilakukan berdasarkan satu siri baris dalam partition, dalam kes ini, partition yang dibuat berdasarkan lajur circle_id.

Sintaks fungsi tetingkap

Sintaks fungsi tetingkap yang digunakan di sini adalah seperti berikut:

<code class="language-sql">sum(amount) OVER (PARTITION BY circle_id ORDER BY ea_year, ea_month) AS cum_amt</code>

Fungsi tetingkap ini membahagikan mengikut lajur circle_id, yang bermaksud jumlah terkumpul akan dikira secara berasingan untuk setiap circle_id. Dalam setiap partition, baris diisih mengikut lajur ea_year dan ea_month, yang memastikan jumlah kumulatif dikira untuk setiap circle bulan dari awal hingga terkini.

Contoh pertanyaan

Berdasarkan struktur jadual yang disediakan, pertanyaan berikut akan menjana hasil yang diperlukan:

<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>

Penerangan

Pertanyaan ini mengekstrak lajur yang berkaitan daripada jadual tbl dan mengira jumlah kumulatif bagi setiap circle_id. Klausa OVER menentukan pembahagian dan susunan fungsi tetingkap, memastikan jumlah terkumpul dikira dengan betul untuk setiap circle.

Nota Penting

    Susunan fasal
  • dalam klausa OVERORDER BY adalah penting untuk mendapatkan hasil yang diingini.
  • Jika jadual menyimpan nilai tarikh, anda boleh menggunakannya terus dalam klausa ORDER BY. Walau bagaimanapun, jika anda menggunakan perwakilan rentetan bulan, anda mungkin perlu menggunakan fungsi to_date() untuk menukarnya kepada nilai tarikh.
  • Lajur cum_amt yang terhasil dalam jadual sasaran akan mengandungi jumlah kumulatif lajur amount, dibahagikan dengan circle_id dan diisih mengikut ea_year dan ea_month.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Jumlah Terkumpul dalam PostgreSQL Menggunakan Fungsi Tetingkap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn