みなさんこんにちは!
今回はSQLの中でも、多用することになるであろう基本命令COUNT関数について見ていきましょう。
- COUNTの使い方!
- 重複を回避するには?
- グループごとにCOUNTを使おう!
- 他にもある!集計関数たち!
まず基本的な使い方から入り、「重複回避」や「グループごと」「その他集計関数」など、需要の高い応用的な使い方を見ていくことにします。それではよろしくお願いいたします。
COUNTとは
COUNTとは集計関数の一つで、一言で言えば数を数える関数です。また集計関数とは「平均値」「合計値」など何かを集計する時に使用する関数たちのことを指します。
COUNT以外の集計関数は最後に説明するとして、まずはCOUNT関数について見てきましょう。
COUNTの使い方!
使い方は非常に簡単です。例えばユーザーのデータが入っている、userテーブルがあったとして、その数をカウントしたいとしましょう。それを実現するには以下のように入力しましょう。
実行コマンド:
SELECT COUNT( * ) FROM user;
結果:
+----------+ | count(*) | +----------+ | 3 | +----------+
例えば、ユーザー3人分のデータが入っている場合なら、このように6と表示されるはずです。これだけで数を出力することが可能です。COUNT関数部分のみ改めて見てみましょうか。
COUNT( [数えたい要素] )
COUNT関数で、数えたい要素を囲むだけなので簡単ですね!また今回のようにレコード数(データ数)を調べたいだけならば*を指定することも可能です。
[補足]NULLの場合はカウントされない!?
例えば、userテーブルにnameという名前要素があったとしましょう。その場合、以下のように、その要素を使用してCOUNT関数を使用することも可能です。
実行コマンド:
SELECT COUNT( name ) FROM user;
しかしその場合一つ注意点があります。nameにNULLが入っていた場合、それはカウントには含まれないのです。例えばuserテーブルには、以下のようなデータが入っていたとしましょう。
+------+--------------+ | id | name | +------+--------------+ | 1 | ヤマダ | | 2 | スズキ | | 3 | タナカ | | 4 | タカハシ | | 5 | ワタナベ | | NULL | NULL | +------+--------------+
実行コマンド:
SELECT COUNT( * ) FROM user;
* で集計を行った場合は、6件と表示されます。
実行コマンド:
SELECT COUNT( name ) FROM user;
しかし name で集計を行った場合は、NULLのユーザーが数に入らず5件と表示されます。このことはNULLを含まない集計を行いたい時に利用できますので、しっかり覚えておきましょう。
重複を回避するには?
重複を回避して数を数えたいこともあるでしょう。その場合はDISTINCTを使用することで簡単に実現できます。
DISTINCTは重複レコードを1つにまとめてくれる便利な命令です。例えば、名前の種類だけを知りたいのなら、以下のように使います。
SELECT COUNT(DISTINCT name ) FROM user;
重複を回避する「DISTINCT」ぜひ覚えておいてください。
グループごとにCOUNTを使おう!
GROUP BYと組み合わせることで、種類ごとの集計を行うことも可能です。例えば、先ほどのuserテーブルの、名前ごとの人数をカウントしたい場合は以下のようになります。
SELECT name, COUNT( name ) FROM game_character GROUP BY name;
+--------------+----------------+ | name | count(name) | +--------------+----------------+ | NULL | 0 | | スズキ | 1 | | タカハシ | 1 | | タナカ | 1 | | ヤマダ | 1 | | ワタナベ | 1 | +--------------+----------------+
結果としては、一人ずつしかいないので、1ずつですが…ちゃんとグループごとに集計できていますね!
※NULLが0なのは先ほどの説明の通り、COUNT(name)では、NULLは集計の対象外となるためです。
他にもある!集計関数たち!
ここで他の集計関数を簡単に見ておきましょう。記憶しておけば、いつか役立つ日が来るはずです。
AVGで平均をとろう!
平均値を取るならAVG関数です。AVG関数で囲むだけなので簡単ですね!
select AVG( [要素] ) from [テーブル名];
COUNTと違って、AVG( * )などとするとエラーになるため注意しましょう。
* だと、平均の出しようがないですからね…
SUMで合計をとろう!
合計値を取るならSUM関数です。こちらも要素は数字を入れるようにしましょう。
select SUM( [要素] ) from [テーブル名];
MAXで最大をとろう!
最大値のみを取るならMAX関数です。
select MAX( [要素] ) from [テーブル名];
MINで最小をとろう!
最小値のみを取るならMIN関数です。
select MIN( [要素] ) from [テーブル名];
まとめ
以上でCOUNT関数の説明を終わります。「集計をする」というシンプルな関数ゆえに、利用頻度も多くいろいろな使われ方をしますね!今回学んだことの中に、今必要としている知識が含まれていたのなら幸いです。
また他の技術もいつか必要になった時には、このページを参考にしてみてください!