応用情報技術者試験 午前

解説一覧 / 令和6年度 春期 問26

解説を読む ↓

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, 部品.発注点

問題の図
図(問題冊子 p.17 より)— クリックで原寸

正解はウ

解説 本サイト独自(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

自分で解いてから答え合わせをするなら 問題バンク — 解説は解答後に表示されます。