Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mendapatkan Berbilang Kiraan dengan Cekap daripada Satu Pertanyaan SQL?

Bagaimanakah Saya Boleh Mendapatkan Berbilang Kiraan dengan Cekap daripada Satu Pertanyaan SQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-20 16:21:14256semak imbas

How Can I Efficiently Get Multiple Counts from a Single SQL Query?

Optimumkan reka bentuk pertanyaan: gunakan satu pernyataan SQL untuk mencapai berbilang kiraan

Dalam analisis data, selalunya perlu mendapatkan berbilang kiraan untuk keadaan berbeza dalam jadual. Walaupun pertanyaan mudah boleh mengembalikan satu kiraan, mendapatkan berbilang kiraan dalam satu pertanyaan memerlukan pendekatan yang lebih bernuansa.

Struktur pertanyaan:

Untuk ini, kita boleh menggunakan pernyataan CASE digabungkan dengan fungsi agregat. Kaedah ini menyerupai kefungsian fungsi PIVOT dalam beberapa sistem pangkalan data. Pertanyaan yang dijana dalam bentuk:

<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>

Arahan:

    Fungsi
  • COUNT(*) mengira jumlah bilangan baris untuk setiap distributor_id.
  • Penyataan
  • CASE menggunakan logik bersyarat untuk menambah kiraan baris berdasarkan lajur level. Jika level ialah 'exec', maka ExecCount dinaikkan; jika level ialah 'peribadi', maka PersonalCount dinaikkan.
  • Klausa
  • GROUP BY mengumpulkan hasil dengan distributor_id, memastikan kiraan unik untuk setiap pengedar.

Kelebihan kaedah ini:

  • Kecekapan: Pertanyaan ini mendapatkan semula berbilang kiraan dengan satu pelaksanaan, menghapuskan keperluan untuk berbilang pertanyaan atau subkueri yang kompleks.
  • Kejelasan: Struktur pertanyaan ringkas dan mudah difahami, mudah diselenggara dan diubah suai.
  • Fleksibiliti: Penyata KES boleh diubah suai untuk menampung keadaan atau tahap lain untuk memenuhi keperluan masa hadapan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Berbilang Kiraan dengan Cekap 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