“部門別売上”表から,部門コードごと,期ごとの売上を得る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 |
テクノロジ系
“部門別売上”表から,部門コードごと,期ごとの売上を得る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 |
正解 イ
第1期と第2期の行を縦に足し合わせて1つの結果にするのは、和集合を求めるUNIONです。
問合せ結果は、各部門の第1期の行(3行)と第2期の行(3行)を縦に並べた6行です。'第1期' AS 期のように定数を列として出力すると、期の列を作れます。第1期売上を売上とするSELECTと、第2期売上を売上とするSELECTを用意します。2つの結果をUNIONで和集合にすると6行になります。最後にORDER BY 部門コード, 期で並べると、問合せ結果と一致します。
ア:INTERSECTは、両方の結果に共通する行だけを返す積集合の演算です。期の値が'第1期'と'第2期'で必ず異なるので、結果は0行になります。
ウ:CROSS JOINは3行×3行の直積で9行を作ります。SELECT句がAの列だけなので、第1期の行が重複して並び、第2期の行は出ません。
エ:部門コードで内部結合すると3行になります。SELECT句がAの列だけなので、第1期の3行しか出ません。
出典:令和3年度 秋期 応用情報技術者試験 問29
全年度から出題。10問で実力を判定します。登録不要。
出典:令和3年度 秋期 応用情報技術者試験 問29(独立行政法人情報処理推進機構)
解説と用語ページは生成 AI が書き、別の生成 AI が確かめています。作り方