部門別売上表の第1期売上と第2期売上を縦方向に統合するSQL UNION文

正解は イ です。 どの選択肢も、第1期の売上を取り出す SELECT と、第2期の売上を取り出す SELECT を組み合わせています。問合せ結果は 2つの結果の行を縦に足し合わせたもの (各部門に第1期と第2期の2行)なので、和集合を求める UNION が当てはまります。 1つ目のSELECT 2つ目のSELECT D01, 第1期, 1,000 D01, 第2期, 4,000 D02, 第1期, 2,000 D02, 第2期, 5,000 D03, 第1期, 3,000 D03, 第2期, 8,000 選択肢 組合せ方 結果 ア INTERSECT 両方に共通する行(期が違うので無い) 0行 イ UNION 両方の行を合わせる 6行(問合せ結果と一致) ウ CROSS JOIN 全ての行の組合せを横につなぐ 9行で列も多い エ INNER JOIN 部門コードが同じ行を横につなぐ 3行で列も多い

“部門別売上”表から,部門コードごと,期ごとの売上を得る SQL 文はどれか。

部門別売上

部門コード

第1期売上

第2期売上

D01

1,000

4,000

D02

2,000

5,000

D03

3,000

8,000

〔問合せ結果〕

部門コード

期

売上

D01

第1期

1,000

D01

第2期

4,000

D02

第1期

2,000

D02

第2期

5,000

D03

第1期

3,000

D03

第2期

8,000

出典令和3年度 秋期 応用情報技術者試験 午前 問29
ア
SELECT 部門コード, '第1期' AS 期, 第1期売上 AS 売上  FROM 部門別売上 INTERSECT (SELECT 部門コード, '第2期' AS 期, 第2期売上 AS 売上  FROM 部門別売上) ORDER BY 部門コード, 期
イ
SELECT 部門コード, '第1期' AS 期, 第1期売上 AS 売上  FROM 部門別売上 UNION (SELECT 部門コード, '第2期' AS 期, 第2期売上 AS 売上  FROM 部門別売上) ORDER BY 部門コード, 期
ウ
SELECT A.部門コード, '第1期' AS 期, A.第1期売上 AS 売上  FROM 部門別売上 A CROSS JOIN (SELECT B.部門コード, '第2期' AS 期, B.第2期売上 AS 売上  FROM 部門別売上 B) T ORDER BY 部門コード, 期
エ
SELECT A.部門コード, '第1期' AS 期, A.第1期売上 AS 売上  FROM 部門別売上 A INNER JOIN (SELECT B.部門コード, '第2期' AS 期, B.第2期売上 AS 売上  FROM 部門別売上 B) T ON A.部門コード = T.部門コード ORDER BY 部門コード, 期