sql

SQLの条件分岐 【CASE式】

このページでは、SQL文での条件分岐方法【CASE式】を解説していきます。

WHERE文で行っている条件分岐をSQLで行ってみましょう( ̄▽ ̄)

 

1.case式とは

CASE式とは以下のような記載で条件分岐をする方式です。

CASE WHEN 条件1 THEN 値1,
WHEN 条件2 THRN 値2,
ELSE 値3
END

条件1の時に値1を指定、条件2の時に値2を指定、それ以外の時は値3を指定します。
SELECTやUPDATE、DELETEなど様様な面で使用できるのでとても便利です(^^♪

2.select文でcase式を使用しよう

ではまず、select文でCASE式を使用するサンプルを紹介していきます。

以下は大学の定期試験の結果です。

サンプルではこちらを使用して説明していきます。

使用するテーブル
(test_result)

id 数学(math) 英語(english) 物理(physics) 社会(society) 氏名(name) 総合(total)
1 100 100 100 100 田中 400
2 79 66 86 65 佐々木 296
3 47 54 34 76 アムロ 211
4 45 87 67 78 真沙良 277
5 88 98 100 78 大野 364
6 12 22 10 7 野比 51
7 87 34 87 55 立花 263
8 65 76 67 78 286
9 100 98 98 31 五十嵐 327

この結果で全教科の合計が300点以上のものを「合格」、

300点未満のものを「不合格」とします。

条件分岐のコードは以下のようになります。

select id, name as 氏名, total as 総合,
case when total >= 300 then '合格'
else '不合格' end as 判定
from test_result;

結果

id 氏名(name) 総合(total) 判定
1 田中 400 合格
2 佐々木 296 不合格
3 アムロ 211 不合格
4 真沙良 277 不合格
5 大野 364 合格
6 野比 51 不合格
7 立花 263 不合格
8 286 不合格
9 五十嵐 327 合格

3.update文でcase式を使用しよう

次にupdate文でCASE式を使用していきましょう

先ほどのtest_resultテーブルを引き続き使用していきます。
先ほど不合格となったものに補修と課題がかされ、全員がクリアしたため300点以下の人たちの合計点数を300点に引き上げます。

コードは以下のようになります。

update test_result
set total =
case when total<300 then 300
else total end;

実行結果をselect 文で見てみましょう

select name as 氏名,total as 総合 from test_result;
氏名(name) 総合(total)
田中 400
佐々木 300
アムロ 300
真沙良 300
大野 364
野比 300
立花 300
300
五十嵐 327

 

これで全員が300点以上となりましたね。

 

以上で終了となります。お疲れさまでした!(^^)!

-sql

Copyright© タカログ , 2023 All Rights Reserved Powered by AFFINGER5.