SQLのCOUNTで数を数える!基礎から応用まで具体例で解説

  • 2024.01.29
       
【SQL】COUNT関数でレコード数を数えよう!

COUNT関数とは?

SQLの「COUNT関数」とは集計関数の1つで、指定したカラムのレコード件数を取得するクエリです。また、応用すれば重複したレコードを除いたレコード数やグループごとのレコード数、条件を指定したレコード数も調べられます。

集計関数とは
集計関数とは、指定したカラムの合計値や平均値を求めたり、あるいはCOUNT関数のようにデータ件数を取得するなど、その名の通り集計を行う関数を指します。これらを利用することで都度計算する必要がなくなり、データ分析などに使うと便利です。後ほど詳しく紹介しますが、集計関数とそれぞれ用途を以下の表に示しました。

集計関数用途
COUNT項目のデータ件数を取得する
SUM項目のデータ合計値を取得する
AVG項目のデータ平均値を取得する
MAX項目のデータ最大値を取得する
MIN項目のデータ最小値を取得する

また、集計関数を使う場合、併せて使うとより便利な「GROUP BY句」も後ほど紹介します。

レコード数の取得

【使用イメージ】

SELECT COUNT(*) FROM テーブル名

COUNT関数はSELECT文で選択されたテーブルのレコード(行)の件数を返します。引数に「*(アスタリスク)」を指定すると、総レコード数を取得できます。

【試験テーブル】

ID名前試験地点数
1TanakaTokyo100
2YamadaTokyo80
3SatoNagoya85
4SuzukiOsaka90
5TakahashiOsakaNULL
6InoueFukuoka90

【実行コード】

SELECT COUNT(*) FROM 試験;

【実行結果】

(列名なし)
6

ちなみに、上記は「(列名なし)」となっていますが、列名を付けこともでき、その場合はAS句を使います。次のサンプルコードで使ってみます。

NULLを含まないレコード数の取得

【使用イメージ】

SELECT COUNT(列名) FROM テーブル名

COUNT関数の引数にアスタリスクではなく、列名を指定する場合、その列の値のうち、NULL値を除いたレコード数を取得できます。

【試験テーブル】

ID名前試験地点数
1TanakaTokyo100
2YamadaTokyo80
3SatoNagoya85
4SuzukiOsaka90
5TakahashiOsakaNULL
6InoueFukuoka90

【実行コード】

SELECT COUNT(点数) AS 受験人数 FROM 試験;

【実行結果】

受験人数
5

【まとめ】count(*)とcount(列名)の違い

データにNULL値が含まれていた場合は、COUNTの引数をアスタリスクにするのか列名にするかでデータ件数が変わります。

*(アスタリスク)指定したカラムのレコード数
列名指定したカラムのうち、値がNULLであるものを除いたレコード数

【実行コード】

SELECT COUNT(*) AS アスタリスク, COUNT(点数) AS 列名 FROM 試験;

【実行結果】

アスタリスク列名
65

あなたのご希望に沿った案件が必ず見つかります
【フリーランス向け】高収入好待遇の案件をご紹介

TECH MANIA フリーランス

≫まずは簡単60秒で無料お問い合わせから≪

重複を除いたレコード数の取得

【使用イメージ】

SELECT COUNT(DISTINCT 列名) FROM テーブル名

COUNT関数の引数にDISTINCT句を使うと重複した値を1つにまとめたレコード数を取得できます。

【試験テーブル】

ID名前試験地点数
1TanakaTokyo100
2YamadaTokyo80
3SatoNagoya85
4SuzukiOsaka90
5TakahashiOsakaNULL
6InoueFukuoka90

【実行コード】

SELECT COUNT(DISTINCT 試験地) AS 会場数 FROM 試験

上記のコマンドで重複を排除した試験地の数、つまり試験会場の総数が求められます。

【実行結果】

会場数
4

試験テーブルの試験地列の重複データが取り除かれ、結果が4件になっています。

DISTINCTを指定した列にNULL値を含んでいる場合は?

DISTINCTを指定した列にNULL値を含んでいる場合は、試験テーブルの試験地列にNULLのデータを設定します。

【試験テーブル】

ID名前試験地点数
1TanakaTokyo100
2YamadaTokyo80
3SatoNULL85
4SuzukiNULL90
5TakahashiOsakaNULL
6InoueFukuoka90

【実行コード】

SELECT COUNT(DISTINCT 試験地) AS 会場数 FROM 試験

【実行結果】

会場数
3

結果は3となりました。NULLが除外された上で重複を1つにまとめたデータ数がわかります。

グループ単位でのレコード数の取得

【使用イメージ】

SELECT 列名, COUNT(*) FROM テーブル名 GROUP BY 列名

COUNT関数と、データをグループ化するGROUP BYを組み合わせて使うことで、グループごとのレコード数を集計できます。

【試験テーブル】

ID名前試験地点数
1TanakaTokyo100
2YamadaTokyo80
3SatoNagoya85
4SuzukiOsaka90
5TakahashiOsakaNULL
6InoueFukuoka90

【実行コード】

SELECT 試験地, COUNT(*) AS 受験者数 FROM 試験 GROUP BY 試験地;

【実行結果】

試験地受験者数
Tokyo2
Nagoya1
Osaka2
Fukuoka1

試験地ごとの受験者数が求められました。このように、GROUP BY句で同じ値を持つデータごとのレコード数を求めることができ、データ分析にも応用することができます。

こちらもアスタリスクを指定するとNULL値もデータ件数に含まれるので、NULLを除外する場合は列名を指定する必要があります。

条件を指定したレコード数の取得

【使用イメージ】

SELECT COUNT(*) FROM テーブル名 WHERE 条件

WHERE句は、特定の条件を満たすデータのみを抽出するコマンドです。COUNT関数とWHERE句を組み合わせることで特定の条件を満たすデータ数を集計できます。

【試験テーブル】

ID名前試験地点数
1TanakaTokyo100
2YamadaTokyo80
3SatoNagoya85
4SuzukiOsaka90
5TakahashiOsakaNULL
6InoueFukuoka90

【実行コード】

SELECT COUNT(*) AS 受験者数 FROM 試験 WHERE 試験地='Tokyo';

試験テーブルで試験地がTokyoのレコード数を求めます。

【実行結果】

受験者数
2

【実行コード2】

SELECT COUNT(*) AS 90点以上の得点者数 FROM 試験 WHERE 点数 >= 90;

【実行結果】

90点以上の得点者数
3

count以外の集計関数

平均値を求める「AVG」

平均値を求めるにはAVG関数を使います。

【使用イメージ】

select AVG(列名) from テーブル名

【試験テーブル】

ID名前試験地点数
1TanakaTokyo100
2YamadaTokyo80
3SatoNagoya85
4SuzukiOsaka90
5TakahashiOsakaNULL
6InoueFukuoka90

【実行コード】

SELECT AVG(点数) AS 平均得点 FROM 試験

【実行結果】

平均得点
89

合計値を求める「SUM」

合計値を求めるにはAVG関数を使います。

【使用イメージ】

select SUM(列名) from テーブル名

【試験テーブル】

ID名前試験地点数
1TanakaTokyo100
2YamadaTokyo80
3SatoNagoya85
4SuzukiOsaka90
5TakahashiOsakaNULL
6InoueFukuoka90

【実行コード】

SELECT SUM(点数) AS 合計得点 FROM 試験

【実行結果】

合計得点
445

最大値を求める「MAX」

最大値を求めるにはAVG関数を使います。

【使用イメージ】

select MAX(列名) from テーブル名

【試験テーブル】

ID名前試験地点数
1TanakaTokyo100
2YamadaTokyo80
3SatoNagoya85
4SuzukiOsaka90
5TakahashiOsakaNULL
6InoueFukuoka90

【実行コード】

SELECT MAX(点数) AS 最高得点 FROM 試験

【実行結果】

最高得点
100

最小値を求める「MIN」

最小値を求めるにはAVG関数を使います。

【使用イメージ】

select MIN(列名) from テーブル名

【試験テーブル】

ID名前試験地点数
1TanakaTokyo100
2YamadaTokyo80
3SatoNagoya85
4SuzukiOsaka90
5TakahashiOsakaNULL
6InoueFukuoka90

【実行コード】

SELECT MIN(点数) AS 最低得点 FROM 試験

【実行結果】

最低得点
80

SQLの勉強方法は?

書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。

ただ、SQLに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。

プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。

<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~

このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。

     

Otherカテゴリの最新記事