見出し画像

【SQL】count文の使い方を例文を用いて解説(練習問題あり)

count文は集計関数の一つで、指定したレコード(行)の数を計測する関数です。distinctは計測の重複をなくすために用い、UU(ユニークユーザー)を算出する際などに用います。
そんなcount文を、初心者でも理解しやすいよう、例題を用いて、徹底解説していきます。

count文の基本構文

count文は以下の構文を使うことで条件指定できる。

SELECT
 count(カラム)
FROM
 テーブル
または、
SELECT
 count(distinct カラム)
FROM
 テーブル

count文はcount内で計測したいカラムを指定する必要がある。
カラムを指定せずに、レコード数を計測する際は、

count(1)

というクエリーを実行することができる。
以下は例題だ。

上の図で、「総生徒数」を計測する場合は、

SELECT
 count(id)
FROM
 1年1組基本情報

とクエリーを書く必要がある。
※ count(1)でも同じ結果になる。

distinctを使うと、重複をなくした計測が実行される。
「8人の生徒が入っている部活動数」を計測したい場合は、

SELECT
 count(distinct 部活動)
FROM
 1年1組基本情報

と書く。クエリーを実行すると、8人の生徒が5つの部活動に入っているという結果が返ってくるのだ。

count文の練習問題

練習問題を通じて、実践的にcount文の用法を理解していく。

練習問題 : 「30歳以上の生徒数を計測せよ」

練習問題では、where句を組み合わせたcount文の用法を確認する。
where文の復習(第二回)はこちら👇

回答は以下である。

SELECT
 count(id)
FROM
 1年1組基本情報
where
 年齢 >= 30

結果は以下のように抽出される。

count文でよくあるエラーと解消法

count文でよく起こるエラーと、その解消法を解説していく。

計測するカラムを()で括り忘れるケース

count文では、計測したいカラムを()で括る必要がある。
また、distinctを用いる場合も、

SELECT
 count distinct (カラム)
ではなく、
SELECT
 count (distinct カラム)

と記入することで、エラーを解消してもらいたい。

count(*)と記入してしまうケース

エラーではないが、処理に莫大な時間を要してしまうケースだ。
「*」は全カラム、全レコードをを抽出するものなので、countと組み合わせると、処理するサーバーに負荷がかかってしまう。
(リアルな現場だと、社内エンジニアの方に怒られてしまうこともあります)
そのため、カラムを限定せずレコード数を計測したい場合は、

count(1)

とクエリーを書く癖をつけることを推奨する。

最後に自己紹介

はじめまして、ニューズピックス(https://newspicks.com/)でマーケターをしている平野佑樹です。
普段は、JobPicksというジョブ型キャリアを支援するWebサービス(https://job.newspicks.com/)を運営しており、

  • SQLやGoogle Analyticsを用いた分析

  • TwitterをはじめとしたSNS運用(ショート動画にも挑戦予定)

  • メールマガジン運用

  • Google Optimizeなどを用いたA/Bテスト

  • Search Consoleを用いてコンテンツSEOや開発に関わるSEO施策

など、幅広く業務を担当しています。
マーケターの業務を後押しするtipsをnoteにて発信しております。
(ぜひ、いいねや拡散お願いいたします🙇)

ぜひ、フォローや興味持っていただいた方は、(https://twitter.com/enterrocken)にDMいただけますと幸いです!

この記事が気に入ったらサポートをしてみませんか?