【SQL】COUNT関数を1分でわかりやすく解説

Database

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

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

DISTINCTキーワードやGROUP BYキーワードと同時に利用したりすると、できることがたくさん増えるので理解必須の基本知識です。

このページではCOUNT関数の構文ルール/注意点を誰でも理解できるように1分で解説します。

このページで学べる内容
  • COUNT関数の使い方/構文ルール
  • COUNT関数の注意点:NULLのカウントについて
  • Tips:DISTINCTキーワードとの合わせ技

プログラマー/システムエンジニアを目指す方であれば知らないと恥ずかしい超・重要知識です。是非最後までご覧ください。

スポンサーリンク

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のカウント方法にあります。

例えば、以下のテーブルをカラムを指定せずにカウントしてみます。

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

普通に考えるとどのカラムもNULLなので、結果は0となりそうですが、実はこのSQLを実行すると「8」が返って来ます。

これは、COUNT関数が以下のような性質を持っていることが理由です。

COUNT関数の仕組み
  • COUNT(*)NULLも含めてレコード数をカウントする
  • COUNT(カラム名) はNULLを除外してレコード数をカウントする

つまり、以下の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では返って来ません。

利用するDBMSによっては COUNT(DISTINCT カラム名) の構文が許容されていない場合もあります。その場合は、以下のようにDISTINCTをサブクエリとして利用することで同様の処理を実現することができます。

SELECT COUNT(*) FROM (SELECT DepartMent FROM MemberList );
このページのまとめ
  • COUNT関数はレコード件数を返す
  • COUNT(*)NULLも含めてレコード数をカウントする
  • COUNT(カラム名) はNULLを除外してレコード数をカウントする

システムエンジニアを目指したい方は

システムエンジニアを目指す方や、IT知識を1から身につけたい方は以下のページをご覧ください。

正直どこから学び始めればよいかわからない。どのように勉強していけば、エンジニアとしてのスキルが磨けるか?が分からない・・・という方は必見です。

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

タイトルとURLをコピーしました