問26令和6年度 春期テクノロジ系
“部品”表及び“在庫”表に対し,SQL 文を実行して結果を得た。SQL 文の a に入れる字句はどれか。 部品 部品ID 発注点 P01 100 P02 150 P03 100 在庫 部品ID 倉庫ID 在庫数 P01 W01 90 P01 W02 90 P02 W01 150 [結果] 部品ID 発注要否 P01 不要 P02 不要 P03 必要 [SQL 文] SELECT 部品.部品ID AS 部品ID, CASE WHEN 部品.発注点 > a THEN N'必要' ELSE N'不要' END AS 発注要否 FROM 部品 LEFT OUTER JOIN 在庫 ON 部品.部品ID = 在庫.部品ID GROUP BY 部品.部品ID, 部品.発注点

- アCOALESCE(MIN(在庫.在庫数), 0)
- イCOALESCE(MIN(在庫.在庫数), NULL)
- ウCOALESCE(SUM(在庫.在庫数), 0)
- エCOALESCE(SUM(在庫.在庫数), NULL)
正解はウ
解説 本サイト独自(IPA公表のものではありません)
ウ 在庫数は倉庫ごとの行なので,部品ごとにSUMで合計する。P01は二つの90の合計が発注点100を上回り,P02は在庫数と発注点がともに150なので不要となる。P03は在庫行がなくSUMがNULLになるため,COALESCEで0にすると100より小さくなり,必要となる。
- ア MINを使うと,P01では二つの倉庫の在庫数を合計せず,最小の90だけを発注点100と比べる。そのためP01まで必要となってしまう。
- イ MINを使うのでP01を90だけで判定することに加え,P03ではCOALESCEの結果もNULLのままであり,必要という結果を得られない。
- エ SUMによる集計はできるが,P03のSUMはNULLであり,COALESCEの第2引数もNULLなので0にならない。そのためP03を必要と判定できない。
この解説は間違っています
この解説は,別のモデルによるレビューを受けています。
出典:令和6年度 春期 応用情報技術者試験 午前 問26