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!