はじめに
これまでは正規化や結合について学んできました。
今回は、データを加工して出力するための 「条件分岐(CASE式)」 についてまとめます。
「もし〜ならA、そうでなければB」という条件分岐をSQL内で書くことで、データを見やすい形に変換できます。
1. CASE式とは?
CASE式は、(厳密には違いますが)SQLにおけるIF文のようなものです。
特定の条件に応じて、出力する値を切り替えることができます。
基本的な書き方
CASE
WHEN 条件式1 THEN 値1
WHEN 条件式2 THEN 値2
ELSE 値3
END
2. カテゴリを日本語で仕分ける
売上データにある「カテゴリ」が英単語で管理されている場合、日本語で表示させたいときなどに便利です。
SELECT
商品名,
CASE
WHEN カテゴリ = 'Fruit' THEN '果物'
WHEN カテゴリ = 'Vegetable' THEN '野菜'
ELSE 'その他'
END AS カテゴリ名
FROM
m_products;
実行イメージ
| 商品名 | カテゴリ名 |
|---|---|
| りんご | 果物 |
| にんじん | 野菜 |
| その他商品 | その他 |
3. 売上をランク分けする
集計結果に対して、
- 合計が1000円以上なら「Sランク」
- 500円以上なら「Aランク」
- それ以外は「Bランク」
といったランク付けも可能です。
SELECT
商品名,
SUM(単価 * 数量) AS 売上合計,
CASE
WHEN SUM(単価 * 数量) >= 1000 THEN 'Sランク'
WHEN SUM(単価 * 数量) >= 500 THEN 'Aランク'
ELSE 'Bランク'
END AS ランク
FROM
t_sales
GROUP BY
商品名;
実行イメージ
| 商品名 | 売上合計 | ランク |
|---|---|---|
| メロン | 1500 | Sランク |
| バナナ | 700 | Aランク |
| ガム | 120 | Bランク |
4. なぜ「条件分岐」が重要なのか?
データベースに入っている生のデータが、必ずしもレポートに載せやすい形とは限りません。
CASE式を使うことで、
- データの正規化を崩さずに、出力時だけ見やすく変換できる
- アプリケーション側で処理せず、DB側で加工できる
- 集計結果に対して柔軟なラベル付けができる
といったメリットがあります。
そのため、CASE式はデータ分析やレポート作成において非常に重要な機能です。
まとめ
- CASE式はSQLにおけるIF文
-
WHENで条件を指定する -
THENで条件成立時の値を返す -
ELSEでそれ以外の場合をカバーする
CASE式は、集計やレポート作成で登場する機会が非常に多い機能です。
早い段階で慣れておきたいですね!