過去問解きまくり研究所 ホーム

平成24年度 春期 午前Ⅱ 問9

データ操作

ビューに関する問題

ある月の“月末商品在庫”表と“当月商品出荷実績”表を使って,ビュー“商品別出荷実績”を定義した。このビューに SQL 文を実行した結果の値はどれか。

月末商品在庫

商品コード商品名在庫数
S001A100
S002B250
S003C300
S004D450
S005E200

当月商品出荷実績

商品コード商品出荷日出荷数
S0012012-03-0150
S0032012-03-05150
S0012012-03-10100
S0052012-03-15100
S0052012-03-20250
S0032012-03-25150

〔ビュー“商品別出荷実績”の定義〕

CREATE VIEW 商品別出荷実績 (商品コード, 出荷実績数, 月末在庫数)
   AS SELECT 月末商品在庫.商品コード, SUM (出荷数), 在庫数
       FROM 月末商品在庫 LEFT OUTER JOIN 当月商品出荷実績
       ON 月末商品在庫.商品コード = 当月商品出荷実績.商品コード
         GROUP BY 月末商品在庫.商品コード, 在庫数

〔SQL 文〕

SELECT SUM (月末在庫数) AS 出荷商品在庫合計
   FROM 商品別出荷実績 WHERE 出荷実績数 <= 300
答えと解説を見る

✓ これが正解ア400

解説

条件を満たす S001 と S003 の在庫 100+300=400 です。

ビューは、月末商品在庫を左に置いた LEFT OUTER JOIN で、商品ごとに出荷数を合計しています。商品ごとに求めると、S001 は 50+100=150 で在庫100、S002 は出荷が無いので出荷実績数は NULL で在庫250、S003 は 150+150=300 で在庫300、S004 は NULL で在庫450、S005 は 100+250=350 で在庫200 です。SQL 文の条件 出荷実績数 <= 300 を満たすのは S001 の150と S003 の300で、S005 の350は超えています。NULL との比較は真にならないので、S002 と S004 は選ばれません。月末在庫数を合計すると 100+300=400 になり、正解と一致します。結合で生じた NULL は比較の条件で落ちる、という点を見落とさないことが計算の要です。

ほかの選択肢はなぜ違うのか

出典:平成24年度 春期 データベーススペシャリスト試験 午前Ⅱ 問9

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)