平成22年度 春期 応用情報技術者試験 午前 問33
表Aから実行結果Bを得るためのSQL文はどれか。
A
| 社員コード | 名前 | 部署コード | 給料 |
|---|---|---|---|
| 10010 | 伊藤幸子 | 101 | 200,000 |
| 10020 | 斉藤栄一 | 201 | 300,000 |
| 10030 | 鈴木裕一 | 101 | 250,000 |
| 10040 | 本田一弘 | 102 | 350,000 |
| 10050 | 山田五郎 | 102 | 300,000 |
| 10060 | 若山まり | 201 | 250,000 |
実行結果B
| 部署コード | 社員コード | 名前 |
|---|---|---|
| 101 | 10010 | 伊藤幸子 |
| 101 | 10030 | 鈴木裕一 |
| 102 | 10040 | 本田一弘 |
| 102 | 10050 | 山田五郎 |
| 201 | 10020 | 斉藤栄一 |
| 201 | 10060 | 若山まり |
キーボード:1〜4 で解答 → 次の問題 ← 前の問題
正解と解説を見る
解答する前に解説を開いたので、この問題は「見て解いた」として記録します(正解数には入りません)。
正解:エ
実行結果Bは、6行すべてがそのまま出力されており、部署コードの昇順に並び、同じ部署コードの中では社員コードの昇順に並んでいます。したがって、集約(GROUP BY)ではなく、並べ替え(ORDER BY 部署コード, 社員コード)を行うSQL文です。
各選択肢の確認
-
ア: GROUP BY 社員コード 誤り。GROUP BY は行をグループにまとめる指定で、並べ替えの指定ではありません。また、グループ化に使っていない部署コードや名前を、集約関数を使わずに選択することはできません。
-
イ: GROUP BY 部署コード 誤り。部署コードごとにグループ化すると1部署1行にまとめられることになり、結果Bのように全行を出力することはできません(社員コードや名前も選択できません)。
-
ウ: ORDER BY 社員コード, 部署コード 誤り。社員コード順に並ぶため、10010, 10020, 10030 … の順になり、結果Bと一致しません。
-
エ: ORDER BY 部署コード, 社員コード 正しい。部署コードの昇順、同じ部署内では社員コードの昇順に並び、結果Bと一致します。
答え
エ: SELECT 部署コード, 社員コード, 名前 FROM A ORDER BY 部署コード, 社員コード
出典:平成22年度 春期 応用情報技術者試験 午前 問33