SQL 的 COUNT
函數有時會忽略聚合結果中的零值。 本指南示範如何確保在計算記錄時包含零計數。
考慮兩個表:person
和 appointment
。 一個人可以有多個約會,appointment
表包含 person_id
欄位。
問題:
簡單的GROUP BY
查詢可能會錯過沒有預約的人:
<code class="language-sql">SELECT person_id, COUNT(person_id) AS "number_of_appointments" FROM appointment GROUP BY person_id;</code>
解:左連接
要包含零預約的人員,請使用 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>
說明:
LEFT JOIN
確保 person
表(左表)中的所有行都包含在結果中,無論 appointment
表中的匹配如何。 COUNT(a.person_id)
回傳 0(不是 NULL,與 COUNT(*)
一樣)。 GROUP BY p.person_id
依人員 ID 將結果分組,精確反映零預約計數。 這種方法可以保證完整的計數,包括沒有相關預約的個人。
以上是如何在 SQL COUNT 聚合中包含零計數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!