オラクルSQLの問題でDECODE関数について教えて下さい。
SELECT employee_id,
DECODE(department_id,80,
DECODE(commission_pct,NULL,'NO COMMISSION',
salary * commission_pct),
'NOT SALES'} "COMMISSION"
FROM employees;
上記のは
『DEPATMENT_ID列が80の場合でかつCOMMISSION_PCT列がNULL値の場合は「NO COMMISSION」、NULL値でない場合は「SALARY*COMMISSION_PCT」が文字列に変換されて戻されます。また、DEPARTMENT_ID列が80以外の場合は「NOT SALES」が戻されます。』と解説があり、
次に
SELECT employee_id,
DECODE( NULL IF(commission_pct,NULL),
0,salary * commission_pct,
'NO COMMISSION') "COMMISSION"
FROM employees;
このコードについては
『DECODE関数が最初に戻す「SALARY*COMMISSION_PCT」が数値型なので、「NO COMMISSION」が数値に変換できないためエラーになります。』
と解説がありました。
正常に実行できるのは前段のもので後段はできないとのことなのですがどうしてかわかりません。
なぜ後段では数値型に変換する必要があるのか、前段では同じsalary*commission_pctが文字列として扱っているのかわかりません。
DECODE関数の
DECODE(α、
β、γ
δ)
αがβのときはγを戻し、それ以外のときはδを戻すという公式があると思いますが、
もしかしてγとδは同じ型でなければいけないというルールがあるのでしょうか。でもたとえそうだとしてもまだ解せない部分があるのですが・・・。ご教授どうかよろしくお願いいたします。これはオラクルブロンズSQLの参考書の模擬試験にあった問題になります。
No.1ベストアンサー
- 回答日時:
そういうのって、まずマニュアル読めばすぐ解りそうなものですけど?
http://www.shift-the-oracle.com/sql/functions/de …
「第3パラメータのデータ型を戻り値の型とするので、それ以降に記述する戻り値用のデータもその型に合わせなければならない。」(少々表現変更)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- クレジットカード 日本のクレジットカード手数料が異様に高いのはなぜですか? >>https://www.ai-cred 8 2022/08/29 12:10
- 政治 なぜ日本のカード手数料は中国やヨーロッパの10倍もするのですか? 国はキャッシュレス化を勧めたいなら 6 2023/06/10 11:55
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- 戦争・テロ・デモ アメリカ同時多発テロ アメリカ同時多発テロについて書かれた日本語の本って、ありますか? あれば出来る 1 2022/09/11 19:45
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- PostgreSQL 数値が定期的にあらわれる文字列から、いくつめに出現した数値が指定して切り出したい 1 2023/06/08 13:12
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
[MySQL] 3つのテーブルの結合で...
-
エクセルの関数について教えて...
-
sqlで、600行あるテーブルを100...
-
SQLサーバから、項目の属性(型...
-
上位3位を求めるSQL文は?
-
副問合せの書き方について
-
SQL Left Join で重複を排除す...
-
SQLにて特定の文字を除いた検索...
-
[MySQL] UNIQUE制約の値を更新...
-
Access パラメータクエリをcsv...
-
selectした大量データをinsert...
-
親と子供が複数のSQL取得方法
-
テーブルが5つの時の結合の仕...
-
書籍の内容はまともでしょうか?
-
クエリ表示と、ADOで抽出したレ...
-
【SQL文】Insert into文で文法...
-
VIEWの元のテーブルのindexって...
-
inner joinをすると数がおかし...
-
Mysqlでunionを使った検索速度...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
SQL Left Join で重複を排除す...
-
SQLサーバから、項目の属性(型...
-
副問合せの書き方について
-
VIEWの元のテーブルのindexって...
-
エクセルの関数について教えて...
-
SQLにて特定の文字を除いた検索...
-
マイクラPC版のコマンドで効率...
-
select文のwhere句に配列を入れ...
-
sqlで、600行あるテーブルを100...
-
ある条件の最大値+1を初番する...
-
inner joinをすると数がおかし...
-
Unionした最後にGROUP BYを追加...
-
期間の重複を調べるSQL文につい...
-
クエリ表示と、ADOで抽出したレ...
-
Access パラメータクエリをcsv...
-
PL/SQLの変数について
-
MySQLのDATE型カラム値がNULLの...
-
php+mysqlで複数選択削除について
-
上位3位を求めるSQL文は?
おすすめ情報