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文とウィンドウ関数
ウィンドウ関数と組み合わせることで、より高度なデータ分析が可能になります。
練習問題
- customersテーブルの顧客の年齢(age)に基づいて、以下の区分でグループ分けし、各グループの人数をカウントしてください。
- 20歳未満: 未成年
- 20歳以上60歳未満: 成人
- 60歳以上: 高齢者
- productsテーブルの商品カテゴリ(category)を以下のよう置き換えて表示してください。
- ‘food’: 食品
- ‘electronics’: 家電
- その他: その他
コメント