データベース操作の基本となるSQLの4大命令について、実践的なコード例を交えながら詳しく解説します。初心者でも理解できる基礎から、実務で使える応用テクニックまで、どこまで理解できるでしょうか?
SQL CASE WHEN の構文と条件分岐の使い方を完全解説
SQLのCASE WHEN文による条件分岐の基本から応用まで、具体的なコード例を交えて解説します。複雑なデータ処理をシンプルに実現できる方法とは?
CASE WHEN文は、SQLにおける条件分岐の基本となる構文です。以下のような基本形式で記述します:
CASE
WHEN 条件1 THEN 結果1
WHEN 条件2 THEN 結果2
ELSE 結果3
END
この構文では、条件を上から順に評価し、最初に真となった条件に対応する結果を返します。例えば:
SELECT
商品名,
CASE
WHEN 価格 >= 10000 THEN '高額商品'
WHEN 価格 >= 5000 THEN '中額商品'
ELSE '低額商品'
END AS 価格帯
FROM 商品テーブル
実務でよく使用される具体的な例を見ていきましょう:
SELECT
社員名,
部署,
CASE
WHEN 勤続年数 >= 10 AND 評価 = 'A' THEN 給与 * 1.2
WHEN 勤続年数 >= 5 AND 評価 = 'A' THEN 給与 * 1.1
ELSE 給与
END AS 昇給後給与
FROM 社員テーブル
このクエリでは、勤続年数と評価に基づいて給与の計算を行っています。
CASE WHEN文を効率的に使用するためのポイントをご紹介します:
CASE
WHEN column IS NULL THEN 'Unknown'
WHEN column = '' THEN 'Empty'
ELSE column
END
より複雑なデータ処理を実現するための応用例をご紹介します:
SELECT
部署,
SUM(CASE
WHEN 性別 = '男性' THEN 1
ELSE 0
END) AS 男性数,
SUM(CASE
WHEN 性別 = '女性' THEN 1
ELSE 0
END) AS 女性数
FROM 社員テーブル
GROUP BY 部署
UPDATE 商品テーブル
SET 販売状況 =
CASE
WHEN 在庫数 = 0 THEN '品切れ'
WHEN 在庫数 < 10 THEN '残りわずか'
ELSE '在庫あり'
END
CASE WHEN文使用時の一般的な問題と解決方法:
-- 誤った例
CASE
WHEN 数値カラム = '100' THEN '一致' -- 文字列との比較
ELSE '不一致'
END
-- 正しい例
CASE
WHEN 数値カラム = 100 THEN '一致' -- 数値との比較
ELSE '不一致'
END
-- NULLを考慮した処理
CASE
WHEN カラム IS NULL THEN 'データなし'
WHEN カラム = '値' THEN '一致'
ELSE '不一致'
END
-- 実行計画の確認
EXPLAIN ANALYZE
SELECT
CASE
WHEN カラム > 100 THEN '大'
ELSE '小'
END AS 区分
FROM テーブル