HOME»データベーススペシャリスト平成29年春期»午前Ⅱ 問10
データベーススペシャリスト平成29年春期 午前Ⅱ 問10
問10
ある月の"月末商品在庫"表と"当月商品出荷実績"表を使って,ビュー"商品別出荷実績"を定義した。このビューにSQL文を実行した結果の値はどれか。
- 400
- 500
- 600
- 700
- [出題歴]
- データベース H24春期 問9
分類
テクノロジ系 » データベース » データ操作
正解
ア
解説
最初に設問の定義により導出されるビュー"商品別出荷実績"の構成を考えていきます。
まずSQL文の下記部分では、各表の商品コードを結合キーとして左外部結合を指示しています。
以上より「ア」が正解です。
まずSQL文の下記部分では、各表の商品コードを結合キーとして左外部結合を指示しています。
FROM 月末商品在庫 LEFT OUTER JOIN 当月商品出荷実績
ON 月末商品在庫.商品コード = 当月商品出荷実績.商品コード
左外部結合とは、基準となる左表の行を全て抽出し、右表からは左表の行と自然結合できる行のみを抽出する結合です。左表の行と結合する行が右表に無い場合は右表の列の値をNULLとして結合します。したがって上記のSQLで生成される中間表は下図の左表のようになります。さらにGROUP BY句で、商品コード、在庫数ごとにグループ化すると以下のようになります。ここからSELECT文で商品コード、SUM(出荷数)、在庫数を抜き出したものがビュー"商品別出荷実績"です。ビューに対するSQL文は、ビューの行のうち出荷実績数が300以下のレコードを抽出し、その月末在庫数の合計を表示するものです。NULL値は「IS NULL演算子」か「IN NOT NULL演算子」でしか比較ができないため、ビュー"商品別出荷実績"のうちWHERE句が真を返すのは商品コードS001とS003の2行だけになります。S001とS003の月末在庫数は、それぞれ100,300なので、SUM()は2つの値を足し合わせた400を返します。ON 月末商品在庫.商品コード = 当月商品出荷実績.商品コード
以上より「ア」が正解です。