データベース

基本情報技術者試験 科目A免除 修了試験 20260726 実施分 問20

“部品”表と“在庫”表に対して SQL 文を実行した結果はどれか。ここで,実線の下線は主キーを表す。
部品(主キー: 部品ID)
部品ID部品名
01メモリ
02ディスプレイ
03ディスク
04マウス
05キーボード
在庫(主キー: 場所, 部品ID)
場所部品ID在庫数
東京0110
東京0320
東京0420
大阪0225
大阪0430
〔SQL 文〕 SELECT 部品名, CASE WHEN 部品ID IN (SELECT 部品ID FROM 在庫 WHERE 場所 = '東京' AND 在庫数 > 10 ) THEN '○' ELSE '×' END AS 東京, CASE WHEN 部品ID IN (SELECT 部品ID FROM 在庫 WHERE 場所 = '大阪' AND 在庫数 > 10 ) THEN '○' ELSE '×' END AS 大阪 FROM 部品
  • ア [図] 表(部品名/東京/大阪): ディスプレイ ×/○,ディスク ○/×,マウス ○/○
  • イ [図] 表(部品名/東京/大阪): メモリ ×/×,ディスプレイ ×/○,ディスク ○/×,マウス ○/○
  • ウ [図] 表(部品名/東京/大阪): メモリ ×/×,ディスプレイ ×/○,ディスク ○/×,マウス ○/○,キーボード ×/×
  • エ [図] 表(部品名/東京/大阪): メモリ ×/×,ディスプレイ ×/○,ディスク ×/×,マウス ○/○,キーボード ×/×

出典:基本情報技術者試験 科目A免除 修了試験 20260726 実施分 問20

答えと解説を見る

正解:ウ

覚える知識

SQLのIN条件とOR条件の等価性

CASE WHEN … IN (副問合せ) は,副問合せの結果に含まれるかで値を切り替える。

この問題で必要なこと

各部品について東京・大阪で在庫数>10の行があるかを判定する。メモリ(東京10→×),ディスプレイ(大阪25→○),ディスク(東京20→○),マウス(東京20・大阪30→○○),キーボード(×,×)。

ひっかけ

在庫数>10を>=10と誤読する、選択肢の図が転記上区別しづらい。

この知識の出題:本試験系 1 回・免除試験 1 回(公開問題での観測値)

この知識をアプリで解いて覚える レッスン「SQLの検索条件(WHERE・LIKE・IN・EXISTS)」で学ぶ

同じ知識の過去問