あなたのデータ、ちゃんと数えてる? COUNTで見える世界

PR表記

※アフィリエイト広告を利用しています

どうもニコイチです。「本の数って、いったいどのくらいあるんだろう?」――ふとそんな疑問を持ったことはありませんか? たとえば「蔵書が増えすぎて管理が大変」「書評サイトで高評価の本はどれだろう?」など、膨大なデータから必要な情報を取り出すのは意外と難しいものです。そんなときに活躍するのが、SQLの集計関数。データの合計値や平均値、大きさや小ささなどを簡単に調べられるので、「たくさんある中から欲しい数字だけ知りたい!」というときにとっても便利なんです。今回は、SQLの基本的な集計機能「COUNT」「SUM」「AVG」「MAX」「MIN」の使い方をわかりやすく解説していきます。ぜひ一緒に、データの世界をのぞいてみましょう!

目次

COUNT:データの個数を数える

● COUNTとは?

  • COUNTは、その名の通り「数える(カウントする)」ための関数です。
  • 行(レコード)の数を調べたいときや、特定の列に入っている値(NULL以外)の数を調べたいときに使います。

● COUNT(*) と COUNT(列名)のちがい

  • COUNT(*) はテーブルにある行を「とにかく全部」数えます。NULL(値なし)も含むため、「テーブルに何行あるのか」を正確に調べたい場合に使います。
  • COUNT(列名) は、列名のところがNULLでない行だけを数えます。欠損値(NULL)はカウントしません。

● 具体例

  • 例:booksテーブルには、書籍の名前(Name)や著者(Author)などの情報があります。 SELECT COUNT(Name), COUNT(Author) FROM books;
    • COUNT(Name) は書籍名が入っている行(NULLじゃない部分)だけを数えます。
    • COUNT(Author) は著者が入っている行(NULLじゃない部分)だけを数えます。

COUNT + DISTINCT:重複しないデータの個数を数える

● DISTINCTとは?

  • 重複している値を1つにまとめる仕組みです。
  • COUNT(DISTINCT 列名) とすることで、「列名の重複を除いた数」だけを数えます。

● 具体例

  • 例:ユニークな書籍名(重複しない書籍名)の数を知りたい場合 SELECT COUNT(DISTINCT Name) FROM books;
    • 同じ名前の本が複数登録されていても、重複をまとめて1つと数えます。

SUM:合計を計算する

● SUMとは?

  • SUMは、文字どおり「合計(サム)」を求める関数です。数値カラム(例:価格やレビュー数)に使えます。

● 具体例

  • 例:レビュー数(Reviews)の合計を求めたい場合 SELECT SUM(Reviews) FROM books;
    • これで、テーブルにあるすべての本のレビュー数を足し合わせた合計値が返ってきます。

AVG・MAX・MIN:平均・最大・最小を調べる

● AVG:平均を求める

  • 指定した列の平均値を返します。
  • 例:全書籍の価格(Price)の平均値を知りたい場合 SELECT AVG(Price) FROM books;

● MAX:最大値を求める

  • 指定した列の中で一番大きい値を返します。
  • 例:全書籍の価格(Price)の最大値を知りたい場合 SELECT MAX(Price) FROM books;

● MIN:最小値を求める

  • 指定した列の中で一番小さい値を返します。
  • 例:全書籍の価格(Price)の最小値を知りたい場合 SELECT MIN(Price) FROM books;

● まとめて取得する書き方

  • 平均・最大・最小を一度に表示させることもできます。 SELECT AVG(Price), MAX(Price), MIN(Price) FROM books;
  • 一行でまとめて取得すると、値を見比べやすいのでおすすめです。

使い方のイメージ表

下の表に、今回紹介した集計関数と簡単な意味をまとめました。

関数役割サンプルクエリ例
COUNT(*)テーブルの行数全体を数える(NULL含む)SELECT COUNT(*) FROM books;
COUNT(列名)列にNULLでない値が入っている数を数えるSELECT COUNT(Name) FROM books;
COUNT(DISTINCT 列名)列の重複を取り除いた上で、その数を数えるSELECT COUNT(DISTINCT Name)FROM books;
SUM(列名)指定した列の合計値を求めるSELECT SUM(Reviews) FROM books;
AVG(列名)指定した列の平均値を求めるSELECT AVG(Price) FROM books;
MAX(列名)指定した列の最大値を求めるSELECT MAX(Price) FROM books;
MIN(列名)指定した列の最小値を求めるSELECT MIN(Price) FROM books;

ちょっとしたポイント

  1. 数値型のカラムにのみ使える関数
    • SUM, AVG, MAX, MINなどは、数値型データに向いています。文字列(テキスト)の列に使うと、エラーになったり期待通りに動かなかったりします。
  2. NULLへの注意
    • NULLが含まれる列を集計するときは、思ったより値が小さくなったり、データがカウントされなかったりします。たとえば、COUNT(列名) を使うとNULLはカウントされません。
  3. 集計結果のカラム名を変えたい場合
    • 結果にわかりやすい見出しをつけたい場合は、AS 句を使います。ただし今回の課題ではASを使わない指示なので省略しました。
  4. 大規模データでも素早く計算
    • SQLの集計関数は、とても高速に動くように設計されています。大量のデータでもうまくインデックスを使うと、思いのほか早く結果が返ってきます。

7. 参考情報

  • 公式のSQLドキュメント (例えばMySQLの場合は MySQLドキュメント、PostgreSQLなら PostgreSQLドキュメント) にも詳細が書かれています。
  • Stack Overflow Developer Survey では、多くのエンジニアがSQLを日常的に使っていると回答しています。分析やレポート作成など、ビジネスから趣味まで幅広い用途に役立つため、初歩を押さえておくと後々便利です。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次