SQLで数を数えよう!COUNT関数の基本から応用まで!

みなさんこんにちは!

今回はSQLの中でも、多用することになるであろう基本命令COUNT関数について見ていきましょう。

  • COUNTの使い方!
  • 重複を回避するには?
  • グループごとにCOUNTを使おう!
  • 他にもある!集計関数たち!

まず基本的な使い方から入り、「重複回避」や「グループごと」「その他集計関数」など、需要の高い応用的な使い方を見ていくことにします。それではよろしくお願いいたします。

COUNTとは

COUNTとは集計関数の一つで、一言で言えば数を数える関数です。また集計関数とは「平均値」「合計値」など何かを集計する時に使用する関数たちのことを指します。

COUNT以外の集計関数は最後に説明するとして、まずはCOUNT関数について見てきましょう。

COUNTの使い方!

使い方は非常に簡単です。例えばユーザーのデータが入っている、userテーブルがあったとして、その数をカウントしたいとしましょう。それを実現するには以下のように入力しましょう。

実行コマンド:

結果:

例えば、ユーザー3人分のデータが入っている場合なら、このように6と表示されるはずです。これだけで数を出力することが可能です。COUNT関数部分のみ改めて見てみましょうか。

COUNT関数で、数えたい要素を囲むだけなので簡単ですね!また今回のようにレコード数(データ数)を調べたいだけならば*を指定することも可能です。

[補足]NULLの場合はカウントされない!?

例えば、userテーブルにnameという名前要素があったとしましょう。その場合、以下のように、その要素を使用してCOUNT関数を使用することも可能です。

実行コマンド:

しかしその場合一つ注意点があります。nameにNULLが入っていた場合、それはカウントには含まれないのです。例えばuserテーブルには、以下のようなデータが入っていたとしましょう。

実行コマンド:

* で集計を行った場合は、6件と表示されます。

実行コマンド:

しかし name で集計を行った場合は、NULLのユーザーが数に入らず5件と表示されます。このことはNULLを含まない集計を行いたい時に利用できますので、しっかり覚えておきましょう。

重複を回避するには?

重複を回避して数を数えたいこともあるでしょう。その場合はDISTINCTを使用することで簡単に実現できます。

DISTINCTは重複レコードを1つにまとめてくれる便利な命令です。例えば、名前の種類だけを知りたいのなら、以下のように使います。

重複を回避する「DISTINCT」ぜひ覚えておいてください。

グループごとにCOUNTを使おう!

GROUP BYと組み合わせることで、種類ごとの集計を行うことも可能です。例えば、先ほどのuserテーブルの、名前ごとの人数をカウントしたい場合は以下のようになります。

結果としては、一人ずつしかいないので、1ずつですが…ちゃんとグループごとに集計できていますね!

※NULLが0なのは先ほどの説明の通り、COUNT(name)では、NULLは集計の対象外となるためです。

他にもある!集計関数たち!

ここで他の集計関数を簡単に見ておきましょう。記憶しておけば、いつか役立つ日が来るはずです。

AVGで平均をとろう!

平均値を取るならAVG関数です。AVG関数で囲むだけなので簡単ですね!

COUNTと違って、AVG( * )などとするとエラーになるため注意しましょう。

* だと、平均の出しようがないですからね…

SUMで合計をとろう!

合計値を取るならSUM関数です。こちらも要素は数字を入れるようにしましょう。

MAXで最大をとろう!

最大値のみを取るならMAX関数です。

MINで最小をとろう!

最小値のみを取るならMIN関数です。

まとめ

以上でCOUNT関数の説明を終わります。「集計をする」というシンプルな関数ゆえに、利用頻度も多くいろいろな使われ方をしますね!今回学んだことの中に、今必要としている知識が含まれていたのなら幸いです。

また他の技術もいつか必要になった時には、このページを参考にしてみてください!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

sato

sato

学生時代を含めると、かれこれ10年以上プログラマーとして過ごしています。
様々な言語や環境、プロジェクトに関わってきましたので、より実践的な記事をみなさんにお届きるよう情報発信していきます!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説