![見出し画像](https://assets.st-note.com/production/uploads/images/83582422/rectangle_large_type_2_227d068d6b6230554cb63e755af27fe4.jpeg?width=1200)
【SQL】case when文の使い方とよくあるエラーを例文を用いて解説(練習問題あり)
case whenは条件分岐を行う関数で、条件に応じた結果をデータとして返すことができます。条件に当てはまるレコード数を計測したいときは count(case when 条件) という使用をできます。
そんなcase when 文を、初心者でも理解しやすいよう、例題を用いて、徹底解説していきます。
case when文の基本構文
case when は以下の構文を使うことで条件指定できる。
SELECT
case when 条件 then 返したい結果 else 条件以外の場合の結果 end
FROM
テーブル
case when後の条件内では、where条件のように条件指定を行い、thenの後は条件に当てはまる場合の結果、else以下にそれ以外の結果を指定することができる。
![](https://assets.st-note.com/img/1653203427472-UxNQNK8Ee6.png?width=1200)
上の図で、「発行部数5,000以上をover、それ以外をunder」という結果を返したい場合は、
SELECT
書籍,
発行部数,
case when 発行部数>=5000 then over else under end
FROM
書籍情報
と書くことで、このような結果を返すことができる。
![](https://assets.st-note.com/img/1653203664587-J24uvNI4gH.png?width=1200)
case when文の練習問題
練習問題を通じて、実践的にcount文の用法を理解していく。
![](https://assets.st-note.com/img/1653203771538-PoXlzkfXEt.png?width=1200)
練習問題 : 「『発行部数5000以上の書籍』をoverとして、『発行部数5000未満』をunderとして計測しなさい」
今回は、count文とcase whenを用いた分析だ。
回答は以下である。
SELECT
count(case when 発行部数 >= 5000 then 1 else null end) as over,
count(case when 発行部数 < 5000 then 1 else null end) as under
FROM
1年1組基本情報
nullは「空白」という意味であり、countで計測しないようサーバーで処理される。
case when文でよくあるエラーと解消法
case when文でよく起こるエラーと、その解消法を解説していく。
else 以下の返し文が書かれていないケース
case文は条件分岐なので、case内条件に対して返す結果と、それ以外の場合に対して返す結果の2つを指定しなければならない。
case when 条件 then 返す結果 end
とした場合、条件分岐が成立せずエラーが出てしまう場合がある。
else以下の指定をすることでエラーが解消されるだろう。
最後に自己紹介
はじめまして、ニューズピックス(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いただけますと幸いです!