Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Berbilang Kiraan daripada Satu Pertanyaan SQL?

Bagaimana untuk Mendapatkan Berbilang Kiraan daripada Satu Pertanyaan SQL?

Patricia Arquette
Patricia Arquetteasal
2025-01-20 16:28:10742semak imbas

How to Get Multiple Counts from a Single SQL Query?

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:

  • *`KIRA()**: Calculates the total number of rows for eachid_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!

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