SQLで条件分岐!CASE文の基本をわかりやすく解説

この記事は約4分で読めます。
記事内に広告が含まれています。

CASE文とは?

SQLのCASE文は、ExcelのIF関数のように、条件に基づいて異なる値を返すことができる機能です。これにより、データの分析や加工をより柔軟に行うことができます。

CASE文の基本的な書き方

CASE 
    WHEN 条件1 THEN 値1
    WHEN 条件2 THEN 値2
    ELSE 値3
END
  • CASE: CASE文の開始を示します。
  • WHEN 条件: 指定した条件が真の場合に実行される部分です。
  • THEN 値: 条件が真の場合に返される値です。
  • ELSE 値: どの条件にも合致しない場合に返される値です。(省略可能)
  • END: CASE文の終了を示します。

CASE文の使用例

  • 成績判定
SELECT
    name,
    score,
    CASE
        WHEN score >= 90 THEN '秀'
        WHEN score >= 80 THEN '優'
        WHEN score >= 70 THEN '良'
        ELSE '可'
    END AS grade
FROM students;

上記の例では、成績に基づいて「秀」「優」「良」「可」のいずれかの評価を付与しています。

  • 値の置換
SELECT
    product_name,
    CASE
        WHEN category = '食品' THEN '食品部門'
        WHEN category = '家電' THEN '家電部門'
        ELSE 'その他'
    END AS category_name
FROM products; 

上記の例では、カテゴリ名をより分かりやすい名称に置き換えています。

CASE文の種類

単純CASE文

特定の値と比較します。

CASE sex 
    WHEN '男' THEN '男性'
    ELSE '女性'
END

検索CASE文

任意の条件式を評価します。

CASE
    WHEN age >= 20 THEN '成人'
    WHEN age < 20 THEN '未成年' 
END

CASE文の活用例

  • データの集計

特定の条件を満たすデータのみを集計する

  • レポートの作成

データを分かりやすく分類して表示する

  • データのクリーニング

データの誤りを修正したり、標準化する

  • 複雑なロジックの実現

複数の条件を組み合わせた処理を行う

注意点

  • NULL値
    NULL値の扱いに注意が必要です。NULL値を比較する場合にはIS NULLやIS NOT NULLを使用します。
  • パフォーマンス
    複雑なCASE文はパフォーマンスに影響を与える可能性があります。インデックスの作成などを検討しましょう。

まとめ

CASE文は、SQLの表現力を広げ、より複雑なデータ処理を可能にする強力な機能です。条件分岐を適切に活用することで、データ分析やレポート作成を効率的に行うことができます。

さらに詳しく学びたい方へ

  • CASE文のネスト
    CASE文の中に別のCASE文を組み込むことができます。
  • CASE文とUPDATE文の組み合わせ
    データを更新する際にCASE文を使用できます。
  • CASE文とウィンドウ関数
    ウィンドウ関数と組み合わせることで、より高度なデータ分析が可能になります。

練習問題

  1. customersテーブルの顧客の年齢(age)に基づいて、以下の区分でグループ分けし、各グループの人数をカウントしてください。
    • 20歳未満: 未成年
    • 20歳以上60歳未満: 成人
    • 60歳以上: 高齢者
  2. productsテーブルの商品カテゴリ(category)を以下のよう置き換えて表示してください。
    • ‘food’: 食品
    • ‘electronics’: 家電
    • その他: その他

コメント

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