wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

Quizz 2024/03/29

Total questions: 1

Worksheet time: 30mins

Name
Class
Date
1-3.

販売管理システムで使用する SQL 文の検証に関する次の記述を読んで,設問 1 ~ 3 に答えよ。

X 社は,輸入インテリアの販売を行っており,全国に店舗を展開している。現在,店舗ごとの受注・出荷は販売管理システムで管理している。新たに,インターネットで販売を行う Web ショップを開設することになり,それに合わせて,Web ショップでの受注も管理できる販売管理システムを構築することにした。

新システムの開発に当たって,システム部の Y 君が初めてデータベースの設計・開発を任され,Z係長が指導をすることになった。

〔新システムの機能概要〕

・Web ショップで受注した商品は,顧客の住所を基に在庫のある最寄り店舗から出荷する。

・受注情報には受注店舗の情報をもち,受注明細には出荷店舗の情報をもつ。

・実店舗での販売においては,受注情報と受注明細の店舗は,販売した実店舗とする。

・ Web ショップでの販売においては,受注情報の店舗は Web ショップとし,受注明細の店舗は出

荷を行う最寄り店舗とする。

・Web ショップも含めた全店舗の売上を,月次で店舗ごとに集計する。

・ Web ショップで販売した商品の売上については,出荷した実店舗に配分する。したがって,Web

ショップの売上を,月次で受注明細の出荷店舗ごとに集計する。

・Web ショップの店舗番号は“A09999”とする。


〔新システムで使用する SQL 文の検証〕
(1)テーブル設計

Y 君は,新システムのデータベースのテーブルを設計した。設計したテーブルの一部を図 1 に示す。

図1:テーブル設計(一部)

店舗(店舗番号、店舗名、店舗住所)
顧客(顧客コード、氏名、住所、電話番号)
受注(受注番号、受注日付、受注店舗番号、顧客コード)
受注明細(受注番号明細番号、商品番号、出荷店舗番号、受注数、受注金額)
在庫(商品番号店舗番号、在庫数)

注:下線は主キーを表す


2)SQL 文の作成

Y 君は,店舗ごとの売上を月次で集計する図 2 の SQL 文と,Web ショップの売上を出荷店舗ごとに月次で集計する図 3 の SQL 文を作成した。“: 指定月開始日”,“: 指定月終了日”は,それぞれ集計対象月の開始日,終了日を表す埋込み変数である。

図2:店舗ごとの売上を集計するSQL文

SELECT t.店舗番号, t.店舗名, SUM(m.受注金額) AS 金額
FROM (店舗 t INNER JOIN (SELECT j.受注店舗番号, j.受注番号 FROM 受注 j
WHERE j.受注日付 BETWEEN :指定月開始日 AND :指定月終了日) p
ON t.店舗番号 = p.受注店舗番号)
INNER JOIN 受注明細 m ON p.受注番号 = m.受注番号
GROUP BY t.店舗番号, t.店舗名
ORDER BY t.店舗番号

図3:Webショップの売上を出荷店舗ごとに集計するSQL文

(3)テストデータの作成

Y 君は,SQL 文の検証のためにテストデータを作成した。作成したテストデータのうち,店舗,受注,受注明細の各テーブルのデータを表 1 ~ 3 に示す。

(4)SQL 文の実行

表 1 ~ 3 のテストデータを用いて,指定月開始日を 2020 年 3 月 1 日,指定月終了日を 2020 年 3 月31 日として図 2 の SQL 文を実行した結果,図 4 の出力が得られた。

Z 係長は図 4 の出力された結果を見て,この SQL 文では,集計の対象となる期間に一回も出荷していない店舗の場合は,店舗ごとの売上の集計に出力されないことを指摘した。Y 君が SQL 文を図 5のように修正して実行したところ,期待された結果が得られた。

図5:修正後の店舗ごとの売上を集計するSQL文

SELECT t.店舗番号, t.店舗名, SUM(m.受注金額) AS 金額
FROM 店舗 t [ h ]
(SELECT j.受注店舗番号, j.受注番号 FROM 受注 j
WHERE j.受注日付 BETWEEN :指定月開始日 AND :指定月終了日) p
INNER JOIN 受注明細 m ON p.受注番号 = m.受注番号
ON t.店舗番号 = p.受注店舗番号
GROUP BY t.店舗番号, t.店舗名
ORDER BY t.店舗番号

1.

図 3 の SQL 文について,
[ a ] ~ [ c ]
に入れる最も適切な字句を解答群の中から選び,(a→b→c)順番に記号で答えよ。

a)

ウ→オ→キ

b)

カ→キ→ウ

c)

ア→キ→オ

d)

カ→キ→エ

2.

図 3 の SQL 文を,
指定月開始日を 2020 年 3 月 1 日,
指定月終了日を2020 年 3 月 31 日として,
表1 ~ 3 のテストデータを用いて実行した。その結果として,データ項目名とデータの値の一覧表の [ d ] ~ [ g ] に入れる最も適切な字句を解答群の中から選び,(d→e→f→g)順番に記号で入力してください。

a)

ア→オ→イ→ク

b)

ア→オ→ウ→カ

c)

イ→キ→ク→エ

d)

エ→キ→カ→ア

3.

図5中の [ h ] に入れる適切な字句を解答群の中から選び,記号で答えよ。

a)

EXISTS

b)

RIGHT OUTER JOIN

c)

DISTINCT

d)

LEFT OUTER JOIN