データベーススペシャリスト平成29年春期 午前Ⅱ 問10

問10

ある月の"月末商品在庫"表と"当月商品出荷実績"表を使って,ビュー"商品別出荷実績"を定義した。このビューにSQL文を実行した結果の値はどれか。
10_1.png/image-size:463×164
10_2.png/image-size:455×231
  • 400
  • 500
  • 600
  • 700
  • [出題歴]
  • データベース H24春期 問9

分類

テクノロジ系 » データベース » データ操作

正解

解説

最初に設問の定義により導出されるビュー"商品別出荷実績"の構成を考えていきます。

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

以上より「ア」が正解です。
© 2016-2024 データベーススペシャリストドットコム All Rights Reserved.

Pagetop