0
0

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 CASE句の基本的な書き方と注意点

Posted at

はじめに

SQLのCASE句は、条件に応じて異なる値を返すための強力なツールです。例えば、ポイントプログラムのランクや、天気予報に基づくお勧めの服装など、様々な条件分岐で利用できます。

基本的な構文

SELECT
    CASE
      --(いつ)        (その時に)
        WHEN 条件1 THEN 結果1
        WHEN 条件2 THEN 結果2
    --(それ以外)
        ELSE デフォルト結果
    END AS 列名
FROM テーブル名;

この構文では、条件が一致する場合にその結果を返し、どの条件にも一致しない場合にはELSEの後に指定したデフォルトの結果が返されます。

具体例1: ポイントプログラムのランク分け

たとえば、顧客の累計購入金額に応じて、顧客をランク分けする場合を考えてみましょう。

SELECT
    顧客名,
    累計購入金額,
----
    CASE
--------    
        WHEN 累計購入金額 >= 100000 THEN 'プラチナ'
        WHEN 累計購入金額 >= 50000 THEN 'ゴールド'
        WHEN 累計購入金額 >= 10000 THEN 'シルバー'
        ELSE 'ブロンズ'
    END AS 顧客ランク
FROM 顧客テーブル;

この例では、累計購入金額が100,000円以上の顧客を「プラチナ」ランク、50,000円以上の顧客を「ゴールド」ランク、10,000円以上の顧客を「シルバー」ランク、それ以外を「ブロンズ」ランクに分類しています。

具体例2: 天気予報に基づくお勧めの服装

天気予報に基づいて、その日の服装をお勧めする場合を考えます。

SELECT
    日付,
    天気,
    CASE
        WHEN 天気 = '晴れ' THEN 'Tシャツ'
        WHEN 天気 = '曇り' THEN '長袖シャツ'
        WHEN 天気 = '雨' THEN 'レインコート'
        ELSE 'ジャケット'
    END AS お勧めの服装
FROM 天気予報テーブル;

この例では、天気が「晴れ」の場合には「Tシャツ」、曇りの場合は「長袖シャツ」、雨の場合は「レインコート」、その他の場合は「ジャケット」をお勧めします。

注意点

  1. ネストは避ける
    CASE句は他のCASE句内にネストして使うことが可能ですが、読みやすさを保つためには避けた方が良い場合があります。コードが複雑になりがちなので、できるだけ簡潔に書くようにしましょう。

  2. NULLの扱いに注意
    SQLではNULLは特別な値として扱われます。例えば、NULL値をCASE句でチェックする場合にはIS NULLを使いましょう。次の例では、天気が不明の場合には「情報なし」と表示します。

    SELECT
        日付,
        天気,
        CASE
            WHEN 天気 IS NULL THEN '情報なし'
            WHEN 天気 = '晴れ' THEN 'Tシャツ'
            ELSE 'ジャケット'
        END AS お勧めの服装
    FROM 天気予報テーブル;
    
  3. パフォーマンスへの影響
    大規模なデータセットに対して複雑なCASE句を使用すると、クエリのパフォーマンスに影響を与える可能性があります。条件を簡潔にし、必要に応じてインデックスを活用することで、パフォーマンスを改善できます。

  4. 可読性の確保
    CASE句が長くなると、コードの可読性が低下する恐れがあります。条件を分かりやすく整理し、必要に応じてコメントを追加して、他の開発者が読みやすいコードを書くことを心がけましょう。

まとめ

SQLのCASE句は、さまざまな条件に基づいてデータを分類したり、変換したりするための強力なツールです。この記事を通じて、CASE句の基本的な使い方と注意点を理解し、より柔軟で効率的なクエリを書くためのヒントを得ていただけたら幸いです。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?