"部品"表及び"在庫"表に対し、SQL文を実行して結果を得た。SQL文のaに入れる字句はどれか。 〔SQL文〕 SELECT 部品.部品ID AS 部品ID, CASE WHEN 部品.発注点 > [a] THEN N'必要' ELSE N'不要' END AS 発注要否 FROM 部品 LEFT OUTER JOIN 在庫 ON 部品.部品ID = 在庫.部品ID GROUP BY 部品.部品ID, 部品.発注点

複数行の在庫はSUMで集計しNULLはCOALESCEで0に置き換える

応用情報技術者試験2024年度 春期 午前26/データベース / SQLの応用

部品表:
部品ID発注点
P01100
P02150
P03100
在庫表:
部品ID倉庫ID在庫数
P01W0190
P01W0290
P02W01150
〔結果〕:
部品ID発注要否
P01不要
P02不要
P03必要

選択肢

正解と解説

正解: COALESCE(SUM(在庫.在庫数), 0)

部品IDでグループ化しているので、同じ部品が複数倉庫にある場合は在庫数を合計して発注点と比べる必要がある。P01は90+90=180で発注点100を上回るため不要となり、SUMを使うのが正しい。さらに在庫表に行がないP03は外部結合の結果がNULLになるため、COALESCEで0に置き換えることで発注点100>0となり必要と判定できる。

選択肢ごとの解説

出典:令和6年度 春期 応用情報技術者試験 午前 問26(IPA)

同じ分野の他の問題

最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。