応用情報技術者試験 応用情報技術者試験 令和6年度春期 午前 問26: “部品”表及び“在庫”表に対し,SQL 文を実行して結果を得た。SQL 文の a に入れる字句はどれか。 部品 在庫 〔結果〕 〔SQL 文〕 SELECT 部

←
応用情報技術者試験 令和6年度春期 午前
Q 2626 / 80
“部品”表及び“在庫”表に対し,SQL 文を実行して結果を得た。SQL 文の a に入れる字句はどれか。 部品
部品ID発注点
P01100
P02150
P03100
在庫
部品ID倉庫ID在庫数
P01W0190
P01W0290
P02W01150
〔結果〕
部品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 部品.部品ID, 部品.発注点
この問の正解率:51.54%(1,327件)

解説

応用情報技術者試験 令和6年度春期 午前 問26「“部品”表及び“在庫”表に対し,SQL 文を実行して結果を得た。SQL 文の a…」の正解と解説です。応用情報技術者試験の「テクノロジ系」分野の過去問で、これまでの受験者の正答率は約52%です。

正解

ウ. COALESCE(SUM(在庫.在庫数), 0)

正答率 51.5%(1,327人中 684人が正解)

問題の解説

部品表と在庫表を外部結合して部品ごとにグループ化しているので、在庫がない P03 も結果に残り、その在庫数は NULL になる。在庫は倉庫ごとの行に分かれているため、部品ごとの在庫は合計(SUM)で求め、NULL は COALESCE で 0 に置き換える。在庫の合計は P01 が 180、P02 が 150、P03 が 0 で、発注点(100、150、100)より小さい P03 だけが『必要』になる。

選択肢ごとの解説

  • ア最小値を使うと、P01 は倉庫ごとの最小値 90 になり、100>90 で『必要』となって、結果の『不要』と合わない。
  • イP01 は最小値 90 で『必要』になってしまう。さらに、P03 は NULL のままで 100>NULL が真にならず、『不要』になる。
  • ウ正しい。部品ごとの合計を SUM で求め、在庫行のない部品の NULL を COALESCE で 0 にするので、結果の『不要』『不要』『必要』と一致する。
  • エ合計は求まるが、在庫行のない P03 では COALESCE が NULL を返すので、100>NULL が真にならず『不要』になる。結果の『必要』と合わない。

応用情報技術者試験 令和6年度春期 午前 の過去問一覧に戻る・問26

応用情報技術者試験 の iOS アプリ版

アプリ版なら、よりスムーズに動作し、
スワイプで問題遷移ができます。

応用情報技術者試験 合格.dev を App Store でダウンロード