問7 販売管理データベースに関する記述を読んで,設問1〜4に答えよ。
X 社の営業会議において,取扱い商品の見直しや単価改定などを行うことが決まり,上司の指示に基づき,Y 君は,次回開催される営業会議で必要な資料を,販売管理データベースを活用して作成することになった。
X 社の販売管理システムに収容されているデータは,販売管理データベースとしてデータベース化(図 1 にデータ構造を示す)されている。
商品在庫表の販売終了日には,その商品の販売をやめた日付けが設定されているが,販売中の商品については,NULL 値が設定されている。 また,商品分類には,類似している商品をひとくくりに把握するためのコードが設定されている。
Y 君は,次の作業を行うよう,上司から指示を受けた。
作業1: 1999 年 4 月以降販売を開始し,継続して販売している商品については,商品ごとに販売金額,販売数量,利益率を求める。
利益率を求める計算式は,“利益率 = 利益金額 / 販売金額”とする。
作業2: 1998 年 10 月以前に販売を開始し,継続して販売している商品については,1998 年 10 月 〜 1999 年 9 月の 1 年間の商品ごとの販売金額合計を基に,商品ごとにランク付けを行う。
ランク付けは,販売金額の合計が多い商品から少ない順に並べ,販売金額合計の累計構成比が,70% 未満の商品はランク A,70%以上90% 未満の商品はランク B,90% 以上の商品はランク C とする。
作業3: 1997 年 10 月以前に販売を開始し,継続して販売している商品については,商品分類ごとにランク付けを行い,その推移状況を求める。 手順は次のとおりである。
(1) 1997年10月 〜 1998 年 9 月 〜 1998 年 10 月 〜 1999 年 9 月に分けて,それぞれ商品分類ごとの販売金額合計を基に,商品分類ごとにランク付けを行う。ランク付けは,作業2 と同様にする。
(2) 1997 年 10 月 〜 1998 年 9 月のランク付けした結果と 1998 年 10 月 〜1999 年 9 月のランク付けした結果を基に,図2 で示すランク推移表を作る。
(3) ランク推移表を基に,検討資料を作成するためのデータを抽出する。
なお,ランク推移表の販売金額合計 1 とランク 1 には,1997 年 10 月 〜 1998年 9 月の販売金額合計とランクを設定し,販売金額合計 2 とランク 2 には, 1998 年 10月 〜 1999 年 9 月の販売金額合計とランクを設定する。
また,ランク推移状況には,状況ステータスとして,ランクが上がったものに‘↑’,ランクが変わらないものに‘→’,ランクが下がったものに‘↓’を設定する。
設問1 次に示す SQL 文は,作業 1 の商品ごとの販売金額,販売数量,利益率を求めるものである。 SELECT 商品在庫表.商品コード,商品在庫表.商品名,[ a ], [ b ], ( [ a ] - [ b ] * [ c ] ) / [ a ] 解答群 設問2 作業 2 を行う上で全商品をランク付けの対象にするためには,販売実績がない商品があった場合のことを考慮しておく必要がある。Y 君は,あらかじめ,販売実績がない商品を抽出する SQL 文を考えておくことにした。 次に示す SQL 文は,販売実績がない商品を抽出するためのものである。 SELECT 商品コード,商品名,AS 販売金額 FROM 商品在庫表 d, f に関する解答群 e に関する解答群 設問3 作業 3−(2)のランク推移表を作成する作業として,ランク推移状況に状況ステータスを設定する。
次に示す SQL 文は, ランク推移表のランク推移状況に状況ステータスを設定するためのものである。表は, SQL文中の下線の状況ステータスと条件式の一覧である。 UPDATE ランク推移表 SET ランク推移状況 = 状況ステータス(注:下線付き) WHERE 条件式(注:下線付き)
g に関する解答群 h, i に関する解答群 j に関する解答群 設問4 次に示す SQL 文は,作業 3-(3)の作業として,ランク別商品分類一覧表を作成するためのデータを抽出するものである。 SELECT ランク2.商品分類,ランク推移状況,ランク1,販売金額合計2 抽出結果の順序に関する記述
(1)抽出結果の順序は,1998 年 10 月〜1999 年 9 月のランクが[ k ]〜[ l ]の順となっている。
(2)同一ランクの場合は,ランクが[ m ]商品を先に抽出し,次にランクが表わらない商品,そしてランクが[ n ]商品の順に抽出している。
(3)さらに,ランクが上がった商品について, [ o ]からランクAに上がった商品は,[ p ]からランクAに上がった商品より先に抽出している。
k, l, o, p に関する解答群 m, n に関する解答群
SQL 文の[ ]に入れる適切な字句を,解答群の中から選べ。
FROM 販売表,販売明細表,商品在庫表
WHERE 販売表.販売番号 = 販売明細表.販売番号
AND 商品在庫表.販売開始日 >= ‘1999-04-01'
AND 商品在庫表.販売終了日 IS NULL
AND 販売明細表.商品コード = 商品在庫表.商品コード
GROUP BY 商品在庫表.商品コード, 商品在庫表.商品名, 商品在庫表.仕入単価
ア SUM(仕入単価)
イ SUM(在庫数量)
ウ SUM(販売金額)
エ SUM(販売数量)
オ SUM(販売単価)
カ 仕入単価
キ 在庫数量
ク 販売金額
ケ 販売数量
コ 販売単価
SQL 文の[ ]に入れる適切な字句を,解答群の中から選べ。
WHERE [ d ] AND 販売終了日 IS NULL
AND 商品コード[ e ](SELECT DISTINCT 商品コード
FROM 販売表,販売明細表
WHERE 販売表.販売番号=販売明細表.販売番号 AND [ f ])
ア 販売開始日 BETWEEN‘1998-10-01' AND‘1999-09-30'
イ 販売開始日 < '1998-10-01'
ウ 販売開始日 < ‘1999-09-30'
エ 販売開始日 > ‘1998-10-01'
オ 販売開始日 > ‘1999-09-30'
カ 販売日 BETWEEN ‘1998-10-01' AND ‘1999-09-30'
キ 販売日 < ‘1998-10-01'
ク 販売日 < ‘1999-09-30'
ケ 販売日 > ‘1998-10-01'
コ 販売日 > ‘1999-09-30'
ア IN
イ NOT IN
表中の[ ]に入れる適切な字句を,解答群の中から選ベ。
ア ランク1 = 'C' AND ランク2 = 'A'
イ ランク1 = 'C' AND ランク2 = 'B'
ウ ランク1 = 'C' AND ランク2 = 'C'
エ ランク1 = 'C' AND ランク2 <> 'A'
オ ランク1 = 'C' AND ランク2 <> 'B'
カ ランク1 = 'C' AND ランク2 <> 'C'
ア ランク1 = 'B' AND ランク2 = 'A'
イ ランク1 = 'B' AND ランク2 = 'B'
ウ ランク1 = 'B' AND ランク2 = 'C'
エ ランク1 = 'B' AND ランク2 <> 'A'
オ ランク1 = 'B' AND ランク2 <> 'B'
カ ランク1 = 'B' AND ランク2 <> 'C'
ア ランク1 = 'A' AND ランク2 = 'A'
イ ランク1 = 'A' AND ランク2 = 'B'
ウ ランク1 = 'A' AND ランク2 = 'C'
エ ランク1 = 'A' AND ランク2 <> 'A'
オ ランク1 = 'A' AND ランク2 <> 'B'
カ ランク1 = 'A' AND ランク2 <> 'C'
SQL 文を読んで,抽出結果の順序に関する記述の[ ]に入れる適切な字句を,解答群の中から選べ。解答は重複して選んでもよい。
なお,ランク推移状況に入力した状況ステータスを昇順に整列させると,‘↑’,‘→’,‘↓’の順となる。
FROM ランク推移表
ORDER BY ランク2 ASC,ランク推移状況 ASC,ランク1 DESC
ア ランク A
イ ランク B
ウ ランク C
ア 上がった
イ 変わらない
ウ 下がった