見出し画像

【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以下にそれ以外の結果を指定することができる。

上の図で、「発行部数5,000以上をover、それ以外をunder」という結果を返したい場合は、

SELECT
 書籍,
 発行部数,
 case when 発行部数>=5000 then over else under end
FROM
 書籍情報

と書くことで、このような結果を返すことができる。

case when文の練習問題

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

練習問題 : 「『発行部数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いただけますと幸いです!

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