「SQLを勉強し始めたばかりだけど、どうやってデータを数えればいいの?」
「大量のリストから特定の数字を出すのが難しそう……」
と悩んでいませんか?
この記事を読めば、COUNT関数の使い方がわかり、今日から実務で「パッと数字を出す」集計ができるようになります。
SQLでデータを数えるのは、実はExcelのフィルター機能よりも簡単で、ミスも起きにくい方法です。
日々の事務作業を効率化する「便利な道具」として、まずは基本のCOUNT関数からマスターしていきましょう。
学習をスムーズに進めるために
本サイトでは、実務での再現性を高めるため、全ての記事で共通のサンプルデータを使用しています。
自分のBigQuery環境で実際に手を動かしながら学ぶと、習得スピードが格段に上がります。
まずはサンプルデータ取込手順を参考に、準備を済ませておきましょう!
1. COUNT関数とは
COUNT(カウント)関数は、一言でいうと「データの行数を数える」ための道具です。
Excelでいうところの「COUNT関数」や「COUNTA関数」に近いものですが、BigQuery(SQL)を使うことで、何百万件という膨大なデータも一瞬で数え上げることができます。
実務では、以下のようなシーンで必ず使われます。
「今、手元にどれくらいのデータがあるのか?」というボリューム感を正しく、かつ迅速に把握することは、正確な事務レポートを作成する上で最も重要な第一歩です。
2.基本的な書き方
COUNT関数の基本は非常にシンプルです。
SELECT
COUNT(列名)
FROM
`プロジェクト名.データセット名.テーブル名`;
非常に直感的ですよね。「どこから」「何を」数えるか。この2点を指定するだけです。
3. サンプルデータによる実践
実務をイメージするために、サンプルデータの『customer(顧客名簿)』を使って実際に集計してみましょう。
【使用するテーブル:customers】

3-1.顧客の総数を数える(例)
テーブルにある全ての行(全顧客数)を数えるときは、特定の列名ではなく *(アスタリスク)を使います。これは「全ての項目」という意味です。
-- customerテーブルの全行数をカウント
SELECT
COUNT(*) AS total_customers
FROM
test.customers;
3-2.実行結果

※ AS total_customers と書くことで、結果の項目名にわかりやすい名前(別名)をつけることができます。実務で誰かに結果を共有する際は、この「名前付け」が非常に喜ばれます。
3-3.実行フロー【視覚化】
SQLの実行ボタンを押してから結果が出るまでの数秒間、BigQueryの内部では次のような「データの集約」処理が行われています。

①:FROMで指定した customers テーブルから、対象となる行をすべて吸い出します。
②:上から順にデータ(行)があるか確認し、カウントを積み上げていきます。
③:バラバラだった行を最終的に「12」という1つの数字に集約し、見出し(AS total_count)をつけて画面に出力します。
これが、COUNT関数の動きになります。
4.つまずきポイント・注意点
4-1.初心者がハマる罠:NULL(空欄)のカウント漏れ
・COUNT(*) :「行そのもの」を数えるので、特定の列の値が空欄(NULL)であっても1件として数えます
・COUNT(列名) :「特定の列」の値が入っている行を数えるので、値が空欄(NULL)の場合、値が入っていないとみなされ、1件として数えません
つまり、特定列が空欄(NULL)である行をカウントから除外したい場合、COUNT(列名)を指定すれば良いということになります。例:COUNT(gender)でカウントする場合 ※gender(=性別)
結果として、空欄(NULL)は無視され、11件となります。
「想定より数字が少し足りない」と感じたら、列名を指定してカウントしていないか確認してください。事務作業で「全件数」を出したいときは、迷わず COUNT(*) を使うのが安全です。
5.まとめ
「全体のボリューム」を知りたいなら COUNT(*) :
すべての行を数えるこの書き方は、事務集計の基本中の基本です。データが1件でもある限り、中身が空欄であっても漏らさず数え上げることができるため、まず全体像を把握したい時に使いましょう。
「入力漏れ」をチェックしたいなら COUNT(列名):
特定の列名を指定すると、空欄(NULL)を除いて数えるという性質があります。これを利用して、「顧客名簿の中で、性別が未入力の人は何人いるか?」といった事務的な不備の確認に活用できます。
集計の「見出し(AS)」は必ずセットで付ける:
COUNT関数を実行すると、結果の見出しがデフォルトでは「f0_」などの意味不明な名前になることがあります。実務レポートとしてそのまま使えるよう、AS total_count のように、何を集計した数字なのかを定義する癖をつけましょう。
この使い分けができるだけで、あなたのレポートの正確性はぐっと向上します。
「文法はわかった。でも、実務でミスをするのがまだ怖い……」という方へ
➡ 【独学の限界?】SQL学習で「あと一歩」が進まない時の処方箋
