平成30年 秋 午後 問3 設問4
s.a.さん
(No.1)
CASE
WHEN 決済額 >= 20000 THEN FLOOR(決済額 * 0.03)
WHEN 決済額 >= 10000 THEN FLOOR(決済額 * 0.02)
ELSE FLOOR(決済額 * 0.01)
END
が正解とのこと。
複数のWHENを書けるのは納得なのですが、
条件2(決済額 >= 10000)の範囲に条件1(決済額 >= 20000)が入ってしまっている点が腑に落ちていません。
上書きされてしまうような感覚を覚え、選択肢から消去しそうです。
条件2には「条件1でなく、かつ」の意図が含まれてるんですかね?
IF文を用いてELSEIFを使いたくなります…
WHEN 決済額 >= 20000 THEN FLOOR(決済額 * 0.03)
WHEN 決済額 >= 10000 THEN FLOOR(決済額 * 0.02)
ELSE FLOOR(決済額 * 0.01)
END
が正解とのこと。
複数のWHENを書けるのは納得なのですが、
条件2(決済額 >= 10000)の範囲に条件1(決済額 >= 20000)が入ってしまっている点が腑に落ちていません。
上書きされてしまうような感覚を覚え、選択肢から消去しそうです。
条件2には「条件1でなく、かつ」の意図が含まれてるんですかね?
IF文を用いてELSEIFを使いたくなります…
2022.10.09 14:06
jjon-comさん
★FE ゴールドマイスター
(No.2)
https://www.fe-siken.com/kakomon/30_aki/pm03.html
SQLのCASE句は、WHEN条件式を最初の行から順に判定していき、判定結果が真となる条件式を見つけたらTHENで指定された値を出力値とし、それ以降の条件式の判定はおこないません。
SQLにおいては、
条件式1 が真ならば 処理1 を実行する
ではなく、
条件式1 が真ならば 値1 を返す
です。
条件式1、条件式2、条件式3 のすべて成り立ったからといって、
値1、値2、値3 のすべてを(表計算における1つのセルに)埋め込む訳にはいかない。
返す値はどれか1つだけでなければならない。
そのイメージが脳裏にあれば、
CASE WHEN … THEN … END の動作もイメージできそうに思うのですけれど。
SQLのCASE句は、WHEN条件式を最初の行から順に判定していき、判定結果が真となる条件式を見つけたらTHENで指定された値を出力値とし、それ以降の条件式の判定はおこないません。
> 腑に落ちていません。
> IF文を用いてELSEIFを使いたくなります…
SQLにおいては、
条件式1 が真ならば 処理1 を実行する
ではなく、
条件式1 が真ならば 値1 を返す
です。
条件式1、条件式2、条件式3 のすべて成り立ったからといって、
値1、値2、値3 のすべてを(表計算における1つのセルに)埋め込む訳にはいかない。
返す値はどれか1つだけでなければならない。
そのイメージが脳裏にあれば、
CASE WHEN … THEN … END の動作もイメージできそうに思うのですけれど。
2022.10.10 00:58
s.a.さん
(No.3)
> 条件式1 が真ならば 処理1 を実行する
> ではなく、
> 条件式1 が真ならば 値1 を返す
なるほどーこれは説得力があります。
納得しました!
値1が返ったら以降のWHENを見ないということで、理解しました。
「条件式2 が真ならば 処理2 を実行」して、処理1 の結果を上書きしちゃうような感覚を持っていましたが、認識を改めました!
2022.10.10 13:19
広告
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
広告