5行あるテーブルの列Xのうち、2行がNULLで3行に値が入っています。SELECT COUNT(X) FROM テーブル の結果はどれですか?
正解は3です。COUNT(*)は行数そのものを数えるためNULLを含む5行がカウントされますが、COUNT(列名)は指定した列の値がNULLでない行だけを数えます。この例では値が入っている3行のみが対象となり、結果は3になります。なお、COUNT(DISTINCT 列名)とすれば、NULLを除いた重複のない値の個数を数えることができます。NULLの扱いは集計関数の結果に影響するため、実務でも注意が必要です。