応用情報技術者試験 応用情報技術者試験 令和3年度秋期 午前 問29: “部門別売上”表から,部門コードごと,期ごとの売上を得る SQL 文はどれか。 部門別売上 〔問合せ結果〕

←
応用情報技術者試験 令和3年度秋期 午前
Q 2929 / 80
“部門別売上”表から,部門コードごと,期ごとの売上を得る SQL 文はどれか。 部門別売上
部門コード第 1 期売上第 2 期売上
D011,0004,000
D022,0005,000
D033,0008,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
この問の正解率:63.20%(663件)

解説

応用情報技術者試験 令和3年度秋期 午前 問29「“部門別売上”表から,部門コードごと,期ごとの売上を得る SQL 文はどれか。 …」の正解と解説です。応用情報技術者試験の「テクノロジ系」分野の過去問で、これまでの受験者の正答率は約63%です。

正解

イ. SELECT 部門コード,’第 1 期’ AS 期,第 1 期売上 AS 売上 FROM 部門別売上 UNION (SELECT 部門コード,’第 2 期’ AS 期,第 2 期売上 AS 売上 FROM 部門別売上) ORDER BY 部門コード,期

正答率 63.2%(663人中 419人が正解)

問題の解説

部門別売上表は期ごとに列が分かれている。これを部門コード・期・売上の縦持ちの形にするには、第1期を取り出す SELECT と第2期を取り出す SELECT を UNION で縦に連結する。UNION は二つの結果の行を合わせて重複を除く集合演算なので、6行の結果が得られ、ORDER BY で並べ替えられる。

選択肢ごとの解説

  • アINTERSECT は、二つの結果に共通する行だけを返す。期の列の値が異なるので共通する行がなく、結果は空になる。
  • イ正しい。UNION で第1期の行と第2期の行を縦に連結するので、部門コードごと・期ごとの6行が得られる。
  • ウCROSS JOIN は、すべての行の組合せを作る直積である。9行になり、列も横に並ぶので、期ごとの行に分けた結果にならない。
  • エINNER JOIN は、部門コードが等しい行どうしを横に連結する。3行のまま列が増えるだけで、期ごとの行には分かれない。

応用情報技術者試験 令和3年度秋期 午前 の過去問一覧に戻る・問29

応用情報技術者試験 の iOS アプリ版

アプリ版なら、よりスムーズに動作し、
スワイプで問題遷移ができます。

応用情報技術者試験 合格.dev を App Store でダウンロード