問29令和3年度 秋期テクノロジ系
“部門別売上”表から,部門コードごと,期ごとの売上を得るSQL文はどれか。

- ア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 部門コード, 期
正解はイ
解説 本サイト独自(IPA公表のものではありません)
イ 第1期を取り出すSELECTの結果と,第2期を取り出すSELECTの結果をUNIONで縦に結合するので,各部門コードについて期と売上の組がそれぞれ得られる。最後に部門コード,期の順で並べると,図の問合せ結果になる。
- ア INTERSECTを行の追加に使えると取り違えている。これは二つの問合せに共通する行だけを得る演算であり,期の値が第1期と第2期で異なるため,図の6行を作れない。
- ウ CROSS JOINを二つの問合せ結果の縦方向の結合と取り違えている。Aの各行がTの各行と組み合わされる一方,SELECTにはAの第1期だけが指定され,第2期の行は出力されない。
- エ INNER JOINで同じ部門コードの第1期と第2期を別々の行にできると取り違えている。結合条件で対応行を横に結び付けても,SELECTがAの第1期だけなので,第2期の行は出力されない。
この解説は間違っています
この解説は,別のモデルによるレビューを受けています。
出典:令和3年度 秋期 応用情報技術者試験 午前 問29