Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Memasukkan Kiraan Sifar dalam Agregat SQL COUNT?
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
.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!