Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Berbilang Kiraan daripada Satu Pertanyaan SQL?
Dengan Cekap Mendapatkan Berbilang Kiraan dengan Satu Pertanyaan SQL
Pertanyaan pangkalan data selalunya memerlukan mendapatkan semula berbilang nilai agregat berdasarkan keadaan yang berbeza. Walaupun sesetengah pendekatan mungkin tidak cekap, kaedah ringkas menggunakan pernyataan CASE
dengan fungsi agregat, meniru keupayaan fungsi PIVOT dalam pangkalan data yang kekurangan ciri ini dengan berkesan.
Begini cara melakukannya:
Katakan anda memerlukan kiraan yang dikategorikan mengikut nilai yang berbeza dalam lajur. Sebagai contoh, pertimbangkan jadual pengedar penjejakan dan tahap mereka ('exec' atau 'personal'). Pertanyaan berikut mengira pelbagai kiraan dengan cekap:
<code class="language-sql">SELECT distributor_id, COUNT(*) AS total_count, SUM(CASE WHEN level = 'exec' THEN 1 ELSE 0 END) AS exec_count, SUM(CASE WHEN level = 'personal' THEN 1 ELSE 0 END) AS personal_count FROM yourtable GROUP BY distributor_id;</code>
Pertanyaan ini melaksanakan perkara berikut:
**: Calculates the total number of rows for each
id_pengedar`.SUM(CASE WHEN level = 'exec' THEN 1 ELSE 0 END)
: Mengira baris dengan level
ialah 'exec'. Pernyataan CASE
memberikan 1 jika keadaan adalah benar, 0 sebaliknya. SUM
kemudian jumlahkan 1 dan 0 ini.SUM(CASE WHEN level = 'personal' THEN 1 ELSE 0 END)
: Begitu juga, mengira baris yang level
adalah 'peribadi'.GROUP BY distributor_id
: Kumpulkan keputusan, menyediakan kiraan berasingan untuk setiap pengedar.Pertanyaan tunggal ini dengan cekap mengembalikan jumlah kiraan dan kiraan berasingan untuk tahap 'exec' dan 'peribadi' untuk setiap distributor_id
, semuanya dalam set hasil tunggal. Pendekatan ini jauh lebih cekap daripada menjalankan berbilang pertanyaan berasingan.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Berbilang Kiraan daripada Satu Pertanyaan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!