応用情報技術者 2010年 春期 午前2 問33
問題文
表Aから実行結果Bを得るための SQL文はどれか。

選択肢
ア:
SELECT 部署コード、 社員コード、 名前 FROM A
GROUP BY 社員コード
イ:
SELECT 部署コード、 社員コード、 名前 FROM A
GROUP BY 部署コード
ウ:
SELECT 部署コード、 社員コード、 名前 FROM A
ORDER BY 社員コード、 部署コード
エ:
SELECT 部署コード、 社員コード、 名前 FROM A
ORDER BY 部署コード、 社員コード
(正解)表Aから実行結果Bを得るための SQL文【午前2 解説】
要点まとめ
- 結論:実行結果Bは「部署コード」で昇順に並べ替え、同じ部署内は「社員コード」で昇順に並べ替えた結果であるため、ORDER BY句で
部署コード、社員コード
を指定する必要があります。 - 根拠:GROUP BYは集約処理に使い、単純な並べ替えにはORDER BYを用います。実行結果Bは全レコードを保持しつつ並び順を変えているため、GROUP BYは不要です。
- 差がつくポイント:GROUP BYとORDER BYの違いを理解し、並べ替えのキーを正しく指定できるかが重要です。
正解の理由
選択肢エは
他の選択肢はGROUP BYを使っているか、並べ替えのキーが異なり、実行結果Bと一致しません。
ORDER BY 部署コード、社員コードを指定しており、実行結果Bの並び順と完全に一致します。部署コードでグループ化しつつ、社員コードで昇順に並べ替えているため、部署ごとに社員コード順に並んだ結果が得られます。
他の選択肢はGROUP BYを使っているか、並べ替えのキーが異なり、実行結果Bと一致しません。
よくある誤解
GROUP BYは並べ替えのために使うと思い込むことがありますが、実際は集約関数と組み合わせてグループ化するための句です。単純な並べ替えはORDER BYを使います。
解法ステップ
- 実行結果Bの並び順を確認し、どのカラムでソートされているかを把握する。
- 並べ替えにはORDER BY句を使うことを理解する。
- GROUP BY句は集約処理用であり、今回の目的には不要と判断する。
- SQL文のORDER BY句に
部署コード、社員コード
を指定する。 - 選択肢の中から該当するSQL文を選ぶ。
選択肢別の誤答解説
- ア:
GROUP BY 社員コード
は社員コードでグループ化するため、集約関数なしではエラーになるか、意図しない結果になる。並べ替えもされない。 - イ:
GROUP BY 部署コード
は部署コードでグループ化し、集約関数なしではエラーか不正確な結果。並べ替えもされない。 - ウ:
ORDER BY 社員コード、部署コード
は社員コード優先で並べ替えるため、実行結果Bの並び順と異なる。 - エ:
ORDER BY 部署コード、社員コード
は実行結果Bの並び順と完全に一致し、正解。
補足コラム
SQLの
GROUP BY句は、集約関数(SUM, COUNT, AVGなど)と組み合わせてデータをグループ化するために使います。一方、
ORDER BY句は結果セットの並び順を指定するための句です。混同しやすいですが、目的に応じて使い分けることが重要です。
FAQ
Q: GROUP BY句だけで並べ替えはできますか?
A: いいえ。GROUP BYはグループ化のための句であり、並べ替えはORDER BY句で行います。
A: いいえ。GROUP BYはグループ化のための句であり、並べ替えはORDER BY句で行います。
Q: ORDER BY句で複数カラムを指定する意味は?
A: 最初のカラムで並べ替え、同じ値の場合は次のカラムで並べ替えを行い、細かい順序を決定します。
A: 最初のカラムで並べ替え、同じ値の場合は次のカラムで並べ替えを行い、細かい順序を決定します。
関連キーワード: SQL, ORDER BY, GROUP BY, 並べ替え、集約関数、データベース

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

