Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengira Jumlah Terkumpul dalam PostgreSQL Menggunakan Fungsi Tetingkap?

Bagaimanakah Saya Boleh Mengira Jumlah Terkumpul dalam PostgreSQL Menggunakan Fungsi Tetingkap?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-12 17:23:45159semak imbas

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

Kira jumlah kumulatif menggunakan fungsi tetingkap dalam PostgreSQL

Soalan:

Anda mempunyai jadual pementasan yang mengandungi data kewangan dan jumlah kumulatif yang perlu dimasukkan ke dalam jadual sasaran. Struktur jadual pementasan mengandungi lajur berikut:

  • ea_month: bulan
  • id: pengecam unik
  • amount: jumlah transaksi
  • ea_year: Tahun
  • circle_id: Kalangan berkaitan transaksi

Jadual sasaran hendaklah mengandungi lajur tambahan cum_amt yang menggambarkan jumlah terkumpul amaun untuk setiap baris.

Penyelesaian:

Untuk melakukan ini, anda boleh menggunakan ciri fungsi tetingkap PostgreSQL, yang membolehkan anda melakukan pengiraan pada julat baris. Khususnya, anda boleh menggunakan klausa OVER untuk menggunakan fungsi agregat dalam tetingkap yang ditentukan (SUM dalam kes ini):

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

Dalam pertanyaan ini:

  • PARTITION BY circle_id: Bahagikan data kepada kumpulan berdasarkan circle_id, pastikan jumlah kumulatif dikira secara berasingan untuk setiap bulatan.
  • ORDER BY ea_year, ea_month: Menentukan susunan isihan dalam setiap partition, memastikan jumlah kumulatif dikira dalam susunan kronologi.
  • cum_amt: Ungkapan PengagregatanSUM mengira jumlah kumulatif setiap baris, dengan mengambil kira semua baris dari permulaan partition hingga baris semasa.

NOTA: Pastikan pasangan jadual anda (circle_id, ea_year, ea_month) mempunyai indeks unik untuk menjamin pengumpulan pengiraan yang betul. Ini memastikan bahawa baris dengan circle_id, ea_year dan ea_month yang sama sentiasa muncul bersama dalam tertib diisih.

Dengan menggunakan teknik fungsi tetingkap, anda boleh mengira jumlah kumulatif setiap baris dengan cekap dan memasukkannya ke dalam jadual sasaran.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh 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