Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyoal Secara Cekap untuk Berbilang Kiraan dalam Pernyataan SQL Tunggal?
Bertanya berbilang kiraan dengan cekap dalam satu pernyataan SQL
Dalam pengaturcaraan pangkalan data, selalunya penting untuk mendapatkan semula data agregat seperti kiraan, purata dan jumlah. Apabila berbilang jenis kiraan diperlukan untuk satu pertanyaan, ini boleh dicapai menggunakan gabungan pengagregatan dan pengelompokan bersyarat.
Pertimbangkan pertanyaan berikut:
<code class="language-sql">SELECT distributor_id, COUNT(*) AS TOTAL, COUNT(*) WHERE level = 'exec', COUNT(*) WHERE level = 'personal'</code>
Pertanyaan ini direka untuk mengembalikan maklumat berikut untuk setiap pengedar:
Walau bagaimanapun, pertanyaan ini akan menghasilkan berbilang baris hasil, dengan setiap kumpulan mengira satu baris. Untuk mengelakkan ini, kita perlu menstrukturkan pertanyaan dengan cara yang mengembalikan satu baris untuk semua kiraan yang diperlukan.
Untuk menyelesaikan masalah ini, kita boleh menggunakan pernyataan CASE dalam kombinasi dengan fungsi agregat (seperti COUNT). Pernyataan CASE membolehkan kami menilai secara bersyarat sesuatu ungkapan dan mengembalikan nilai yang sepadan. Ini membolehkan kami mengira rekod berdasarkan kriteria tertentu dalam satu pertanyaan.
Pertanyaan yang diubah suai berikut mengandungi pernyataan KES:
<code class="language-sql">SELECT distributor_id, count(*) AS total, sum(case when level = 'exec' then 1 else 0 end) AS ExecCount, sum(case when level = 'personal' then 1 else 0 end) AS PersonalCount FROM yourtable GROUP BY distributor_id</code>
Dengan menggunakan pernyataan CASE, kami boleh menggunakan syarat pada pengagregatan. Klausa WHEN menentukan syarat, manakala klausa THEN dan ELSE mentakrifkan nilai yang sepadan untuk dikira. Fungsi SUM menambah nilai yang dikembalikan oleh setiap pernyataan bersyarat.
Pendekatan ini mempunyai beberapa kelebihan:
Walau bagaimanapun, adalah penting untuk mempertimbangkan kesan prestasi apabila menggunakan pengagregatan bersyarat untuk memproses set data yang besar. Dalam kes ini, anda mungkin perlu menggunakan indeks atau teknik lain untuk mengoptimumkan pertanyaan.
Atas ialah kandungan terperinci Bagaimana untuk Menyoal Secara Cekap untuk Berbilang Kiraan dalam Pernyataan SQL Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!