ホームページ >データベース >mysql チュートリアル >SQL COUNT 集計にゼロカウントを含めるにはどうすればよいですか?
SQL の COUNT
関数は、集計結果からゼロ値を省略することがあります。 このガイドでは、レコードをカウントするときにゼロカウントが確実に含まれるようにする方法を説明します。
person
と appointment
という 2 つのテーブルについて考えます。 1 人が複数の予定を持つことができ、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 (COUNT(*)
の場合のように NULL ではありません) を返します。GROUP BY p.person_id
は結果を個人 ID ごとにグループ化し、ゼロ予約数を正確に反映します。このアプローチでは、関連付けられた予定のない個人も含めた完全なカウントが保証されます。
以上がSQL COUNT 集計にゼロカウントを含めるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。