問29
“部門別売上”表から、部門コードごと、期ごとの売上を得るSQL文はどれか。
部門別売上 〔問合せ結果〕
┌─────┬─────┬─────┐
│部門コード│第1期売上│第2期売上│ 部門コード 期 売上
┝━━━━━┿━━━━━┿━━━━━┥ −−−−−−−−−−−−
│ D01 │ 1,000 │ 4,000 │ D01 第1期 1,000
├─────┼─────┼─────┤ D01 第2期 4,000
│ D02 │ 2,000 │ 5,000 │ D02 第1期 2,000
├─────┼─────┼─────┤ D02 第2期 5,000
│ D03 │ 3,000 │ 8,000 │ D03 第1期 3,000
└─────┴─────┴─────┘ D03 第2期 8,000
ア 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)
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 部門コード, 期
正解
イ
解説
ア INTERSECT句は、2つの表のどちらにも存在する行を抽出する演算子である。
イ 正しい。UNION句は、複数のSELECT文で得られた結果を1つにまとめる演算子である。
ウ CROSS JOIN句は、交差結合であり、2つのテーブルのすべてのレコードを結合する演算子である。
エ INNER JOIN句は、内部結合であり、2つのテーブルの互いの条件に一致するレコードを抽出して結合する演算子である。