SQLを利用してテーブルのレコード数を調べたいときに便利なCOUNT関数について初心者向けにわかりやすく1分で解説します。

COUNT関数は指定したテーブル/カラムに存在するレコード数を返してくれます。

DISTINCTキーワードやGROUP BYキーワードと同時に利用したりすると、できることがたくさん増えるので理解必須の基本知識です。
このページではCOUNT関数の構文ルール/注意点を誰でも理解できるように1分で解説します。
プログラマー/システムエンジニアを目指す方であれば知らないと恥ずかしい超・重要知識です。是非最後までご覧ください。
SQL:COUNT関数の基本
COUNT関数の基本構文ルールは以下の通り。
SELECT COUNT(カラム名) FROM テーブル名;
レコード数をカウントしたいカラム名を "COUNT" で囲んであげるだけの簡単な構文です。

以下のテーブルをカウントしてみます。

SELECT COUNT(*) FROM MemberList;
結果は「8」となります。レコード数が8個あるので、その結果が返ってきている状態です。

カラムを指定してCOUNT関数を利用する
先ほどは COUNT(*) のようにカラムを指定せずに単純にレコード数をカウントしました。
SELECT COUNT(*) FROM MemberList; --カラムを指定せずにレコード数をカウント
ですが、例えば Department カラムではNULL値が2行含まれており、このNULLを除外したレコード件数をカウントしたいような場合も存在します。

この場合は、Departmentカラムを以下のように指定してカウントすることで実現することができます。
SELECT COUNT(Department) FROM MemberList; --カラム "Department" を指定してカウント

この場合、NULL値がカウントされないので、結果は「6」となります。
COUNT関数の注意点
COUNT関数の大きな注意点がこのNULLのカウント方法にあります。
例えば、以下のテーブルをカラムを指定せずにカウントしてみます。

SELECT COUNT(*) FROM MemberList; --カラムを指定せずにレコード数をカウント

普通に考えるとどのカラムもNULLなので、結果は0となりそうですが、実はこのSQLを実行すると「8」が返って来ます。
これは、COUNT関数が以下のような性質を持っていることが理由です。
つまり、以下のSQLを実行した場合は「8」と「0」が取得されるということ。
SELECT COUNT(*), COUNT(Department) FROM MemberList; --COUNT(*)⇒8 / COUNT(Department)⇒0

以上がCOUNT関数の大きな注意点です。SQL初心者にとって陥りがちな罠の1つですので、しっかりと押さえておきましょう。
Tips:DISTINCTキーワードとの合わせ技
COUNT関数はDISTINCTと組み合わせて利用することも可能です。
SELECT COUNT(DISTINCT Department) FROM MemberList; --Department列の重複を削除してカウント


Department列には「総務部」「財務部」「営業部」の3つの重複しないレコードが存在するため、結果は3となります。
先ほど解説した通り、COUNT(カラム名) とした場合はNULLを除外するので4では返って来ません。

システムエンジニアを目指したい方は
システムエンジニアを目指す方や、IT知識を1から身につけたい方は以下のページをご覧ください。
正直どこから学び始めればよいかわからない。どのように勉強していけば、エンジニアとしてのスキルが磨けるか?が分からない・・・という方は必見です。

システムエンジニア向けに「できるエンジニア」になる方法を1から解説しておりますので、是非ご覧ください。