Rumah >pangkalan data >tutorial mysql >Bagaimana Menjumlahkan Mata dengan Cekap mengikut ID Belanjawan dan Jenis Transaksi Menggunakan SQL?

Bagaimana Menjumlahkan Mata dengan Cekap mengikut ID Belanjawan dan Jenis Transaksi Menggunakan SQL?

Linda Hamilton
Linda Hamiltonasal
2025-01-21 12:43:111086semak imbas

How to Efficiently Sum Points by Budget ID and Transaction Type Using SQL?

Pertanyaan SQL yang Cekap untuk Meringkaskan Data Transaksi

Mengekstrak data berdasarkan berbilang kriteria adalah tugas biasa dalam pengurusan pangkalan data. Bayangkan jadual "urus niaga" yang mengandungi id_akaun, id_belanjawan, mata dan jenis transaksi (peruntukan atau keluaran). Cabarannya ialah untuk mengira jumlah mata dengan cekap bagi setiap bajet_id, dipisahkan mengikut peruntukan dan jenis terbitan.

Pertanyaan SQL ringkas boleh menyelesaikan masalah ini dengan elegan:

<code class="language-sql">SELECT budget_id,
       SUM(CASE WHEN type = 'allocation' THEN points ELSE 0 END) AS allocated,
       SUM(CASE WHEN type = 'issue' THEN points ELSE 0 END) AS issued
FROM transactions
GROUP BY budget_id;</code>

Pertanyaan ini memanfaatkan pernyataan CASE dalam fungsi SUM(). Ungkapan CASE WHEN type = 'allocation' THEN points ELSE 0 END menyemak jenis transaksi. Jika ia 'peruntukan', nilai points yang sepadan dijumlahkan; jika tidak, 0 ditambah. Penjumlahan bersyarat ini diulang untuk transaksi jenis 'isu'.

Menghimpunkan keputusan mengikut budget_id menyediakan ringkasan yang menunjukkan mata yang diperuntukkan dan dikeluarkan untuk setiap belanjawan. Output dengan jelas membentangkan pandangan yang disatukan bagi data transaksi, memudahkan analisis dan pelaporan.

Atas ialah kandungan terperinci Bagaimana Menjumlahkan Mata dengan Cekap mengikut ID Belanjawan dan Jenis Transaksi Menggunakan SQL?. 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