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
DDDasal
2025-01-12 17:20:44940semak imbas

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>

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!

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