Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Memasukkan Kiraan Sifar dalam Agregat SQL COUNT?

Bagaimanakah Saya Boleh Memasukkan Kiraan Sifar dalam Agregat SQL COUNT?

Linda Hamilton
Linda Hamiltonasal
2025-01-08 18:22:42302semak imbas

How Can I Include Zero Counts in SQL COUNT Aggregates?

Mengendalikan Kiraan Pelantikan Sifar dalam SQL COUNT Agregat

Fungsi

SQL COUNT kadangkala menghilangkan nilai sifar daripada hasil agregat. Panduan ini menunjukkan cara memastikan kiraan sifar disertakan semasa mengira rekod.

Pertimbangkan dua jadual: person dan appointment. Seseorang boleh mempunyai berbilang janji temu dan jadual appointment termasuk lajur person_id.

Masalahnya:

Pertanyaan GROUP BY mudah mungkin terlepas orang tanpa janji temu:

<code class="language-sql">SELECT person_id, COUNT(person_id) AS "number_of_appointments"
FROM appointment
GROUP BY person_id;</code>

Penyelesaian: TINGGALKAN SERTAI

Untuk memasukkan orang yang mempunyai janji temu sifar, gunakan LEFT JOIN:

<code class="language-sql">SELECT p.person_id, COUNT(a.person_id) AS "number_of_appointments"
FROM person p
LEFT JOIN appointment a ON p.person_id = a.person_id
GROUP BY p.person_id;</code>

Penjelasan:

  • LEFT JOIN memastikan semua baris daripada jadual person (jadual kiri) disertakan dalam keputusan, tanpa mengira padanan dalam jadual appointment.
  • Jika seseorang tidak mempunyai janji temu, COUNT(a.person_id) mengembalikan 0 (bukan NULL, seperti yang dilakukan dengan COUNT(*)).
  • GROUP BY p.person_id mengumpulkan hasil mengikut ID orang, dengan tepat menggambarkan kiraan janji temu sifar.

Pendekatan ini menjamin kiraan yang lengkap, termasuk individu yang tiada janji temu.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memasukkan Kiraan Sifar dalam Agregat SQL COUNT?. 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