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

Bagaimana untuk Mengira Jumlah Terkumpul dengan Cekap dalam PostgreSQL Menggunakan Fungsi Tetingkap?

DDD
Lepaskan: 2025-01-12 17:20:44
asal
938 orang telah melayarinya

How to Efficiently Calculate Cumulative Sum in PostgreSQL Using Window Functions?

Kira jumlah terkumpul dalam PostgreSQL

Gunakan fungsi tetingkap dalam PostgreSQL untuk mengira dengan cekap jumlah kumulatif medan untuk mengemas kini data daripada jadual pementasan ke jadual sasaran. Masalah yang diberikan memerlukan mencari jumlah kumulatif medan "jumlah" berdasarkan "id_kalangan" sambil mengekalkan atribut lain.

Untuk melakukan ini, ikut langkah berikut:

  1. Partition data: Gunakan klausa PARTITION BY untuk membuat partition berdasarkan "circle_id". Ini memastikan bahawa setiap bulatan dikira secara individu.
  2. Susun data: Tentukan klausa ORDER BY untuk mengisih baris berdasarkan "ea_year" dan "ea_month" (atau lajur "the_date" yang diperolehi). Ini menentukan susunan jumlah terkumpul dikira.
  3. Kira jumlah terkumpul: Gunakan fungsi agregat SUM() menggunakan klausa OVER. Ini akan mengira jumlah kumulatif medan "jumlah" dalam setiap partition dan untuk baris sebelum baris semasa.

Pertanyaan yang dijana:

<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>
Salin selepas log masuk

Pertanyaan ini akan menjana jadual sasaran yang diperlukan di mana jumlah terkumpul ("cum_amt") dikira untuk setiap baris mengikut susunan isihan yang ditentukan.

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

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan