1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[SQL備忘録] SQLで条件分岐を使いこなしたい

1
Posted at

はじめに

これまでは正規化結合について学んできました。
今回は、データを加工して出力するための 「条件分岐(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式は、集計やレポート作成で登場する機会が非常に多い機能です。
早い段階で慣れておきたいですね!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?