平成29年春期試験問題 午前Ⅱ 問10

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

  • 400
  • 500
  • 600
  • 700
正解 問題へ
分野:テクノロジ系
中分類:データベース
小分類:データ操作
解説
最初に設問の定義により導出されるビュー"商品別出荷実績"の構成を考えていきます。

まずSQL文の下記部分では、各表の商品コードを結合キーとして左外部結合を指示しています。
FROM 月末商品在庫 LEFT OUTER JOIN 当月商品出荷実績
ON 月末商品在庫.商品コード = 当月商品出荷実績.商品コード
左外部結合とは、基準となる左表の行を全て抽出し、右表からは左表の行と自然結合できる行のみを抽出する結合です。左表の行と結合する行が右表に無い場合は右表の列の値をNULLとして結合します。したがって上記のSQLで生成される中間表は下図の左表のようになります。
10_3.png
さらにGROUP BY句で、商品コード、在庫数ごとにグループ化すると以下のようになります。
10_4.png
ここからSELECT文で商品コード、SUM(出荷数)、在庫数を抜き出したものがビュー"商品別出荷実績"です。
10_5.png
ビューに対するSQL文は、ビューの行のうち出荷実績数が300以下のレコードを抽出し、その月末在庫数の合計を表示するものです。NULL値は「IS NULL演算子」か「IN NOT NULL演算子」でしか比較ができないため、ビュー"商品別出荷実績"のうちWHERE句が真を返すのは商品コードS001とS003の2行だけになります。S001とS003の月末在庫数は、それぞれ100,300なので、SUM()は2つの値を足し合わせた400を返します。

以上より「ア」が正解です。

この問題の出題歴


Pagetop