Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengira Jumlah Terkumpul dalam PostgreSQL Menggunakan Fungsi Tetingkap?
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 transaksiea_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!