【SQL】CASE式での条件分岐

SQL
※本ページにはプロモーションが含まれます
※本ページにはプロモーションが含まれます
スポンサーリンク

SQLのCASE式とは

条件に応じて別の値を付けられないか、、?

本記事を見に来ていただいた方は、そのようなお悩みをお持ちではないでしょうか。

それを解決できるのがCASE式です。SQLのCASE式ではSELECT文やWHERE句で条件分岐ができます。
例えば、年齢10~19の数値を’10代’と返すことができます。分析やデータパイプラインで利用するケースも多くあります。

本記事では、そちらについて解説いたします!

通常のCASE式について

CASE式の基本構文

SQLのCASE式は、条件に基づいて異なる結果を返すために使用されます。
通常、SELECT文やWHERE句などのSQL文内で使用されます。

基本的な構文は次のとおりです。

CASE
    WHEN 条件1 THEN 結果1
    WHEN 条件2 THEN 結果2
    ...
    ELSE デフォルト結果
END

CASE式は、最初の条件から順番に評価され、最初に一致した条件の結果が返されます。ELSE句を指定することで、いずれの条件にも一致しなかった場合のデフォルトの結果を指定することもできます。

CASE式の使用例

以下にいくつかの例を示します。

例1: 条件に基づいて異なる結果を返す場合

SELECT 列名,
       CASE
           WHEN 列名 = '値1' THEN '結果1'
           WHEN 列名 = '値2' THEN '結果2'
           ELSE 'デフォルト結果'
       END AS 新しい列名
FROM テーブル名

例2: 条件に基づいて集計結果を返す場合

SELECT 列名,
       SUM(CASE
               WHEN 列名 = '値1' THEN 1
               WHEN 列名 = '値2' THEN 2
               ELSE 0
           END) AS 集計結果
FROM テーブル名
GROUP BY 列名

例3: 条件に基づいてWHERE句を作成する場合

SELECT 列名
FROM テーブル名
WHERE CASE
          WHEN 列名 = '値1' THEN 条件1
          WHEN 列名 = '値2' THEN 条件2
          ELSE 条件3
      END

CASE式は、データの変換や条件に基づく計算など、さまざまな場面で使用されます。
CASE式は入れ子(ネスト)することで、より複雑な条件ロジックを表現することもできます。

入れ子(ネスト)したCASE式

ネストされたCASE式は、CASE式内の結果として別のCASE式を含むように構築されます。

そして、条件の評価と結果の決定を階層的に行います。最初のCASE式の条件が一致しない場合は、ネストされたCASE式が評価されます。内側のCASE式も同様に条件を評価し、結果を返します。

入れ子のCASE式の使用例

以下に、入れ子になったCASE式の例を示します。

SELECT 列名,
    CASE
        WHEN 条件1 THEN
            CASE
                WHEN 条件A THEN '結果A'
                WHEN 条件B THEN '結果B'
                ELSE 'デフォルト結果1'
            END
        WHEN 条件2 THEN
            CASE
                WHEN 条件C THEN '結果C'
                WHEN 条件D THEN '結果D'
                ELSE 'デフォルト結果2'
            END
        ELSE 'デフォルト結果'
    END AS 新しい列名
FROM テーブル名

ネストされたCASE式を使用することで、より複雑な条件ロジックを表現できます。

ただし、ネストされたCASE式が多くなるほど、可読性やメンテナンス性が低下する可能性があるため、必要な場合に限って使用するようにしましょう!

 

ここまで読んでいただきありがとうございます。
SQLでは、CASE式に限らず様々なケースで疑問を感じるかと思います。

このようなケースの場合はどのように記述したらよいか、、
データサイエンティストになるにはどのように効率的に学習していったらよいか?
など自己学習に不安がありましたら、以下のスクールのご活用もご検討ください!

スタアカTech AcademyCode Lesson
データサイエンティストを目指すことに特化したスクールです。現役エンジニアから学べるオンラインに特化したプログラミングスクールです。転職の支援はもちろん、副業に活かせるスキルの習得から、副業の仕事紹介まで寄り添います。「未経験から独学でプロを目指す」というコンセプトのもと、実践的なコーディング学習ができるプログラミング学習サービスです。
★コース例
・データサイエンティスト概要コース
・Python基礎コース
・データ加工集計可視化コース
・統計学概要コース
・SQL基礎コース
 など
コース例
・Pythonコース

・AIコース
・データサイエンスコース
★提供スキル
HTML, CSS, JavaScript(DOM), React, Vue, TypeScript, Java, PHP, Python, SQL

SQL参考本

SQL学び始めの時はこちらの本を参考にしていました。

DBやテーブルの構造から、よく使う関数などがまとめられています。基礎を身につけたい方におススメです。

SQL関連記事

そのほか、SQL関連記事をこちらにまとめておりますのでご参考ください。
Coffee Tech Blog SQL関連記事

もしIT業界への転職でお困りでしたら、下記サービスのご活用をご検討ください!
私は転職の際にGeeklyを活用させて頂き、ご縁を頂くことができました。

Geekly転職ドラフト
IT・WEB・ソーシャルゲーム業界を専門とした転職支援サービスです。ギークリー独占の求人案件も扱っており、大手サービスに劣らないサービス力を誇ります。転職ドラフトは年収UP率94.3% / 平均年収UP額148.4万円と圧倒的な年収UP率を誇るイベント型のエンジニア向け転職サービスです。毎月1回開催され、IT/Web系企業を中心に、厳選された約240社からダイレクトスカウトを受け取ることができます。

SQLのCASE式まとめ

以上のように、CASE式は条件に基づいて異なる結果を返すために使用できます。

なお、データベースシステムによっては、入れ子にできるCASE式の深さに制限がある場合もありますので、使用しているデータベースのドキュメントやリファレンスを確認してください。

参考になれば幸いです☕

コメント

タイトルとURLをコピーしました