応用情報技術者 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 解説】
正解の理由
選択肢エは
他の選択肢はGROUP BYを使っているか、並べ替えのキーが異なり、実行結果Bと一致しません。
ORDER BY 部署コード、社員コードを指定しており、実行結果Bの並び順と完全に一致します。部署コードでグループ化しつつ、社員コードで昇順に並べ替えているため、部署ごとに社員コード順に並んだ結果が得られます。他の選択肢はGROUP BYを使っているか、並べ替えのキーが異なり、実行結果Bと一致しません。
解法ステップ
- 実行結果Bの並び順を確認し、どのカラムでソートされているかを把握する。
- 並べ替えにはORDER BY句を使うことを理解する。
- GROUP BY句は集約処理用であり、今回の目的には不要と判断する。
- SQL文のORDER BY句に
部署コード、社員コードを指定する。 - 選択肢の中から該当するSQL文を選ぶ。
選択肢別の誤答解説
- ア:
GROUP BY 社員コードは社員コードでグループ化するため、集約関数なしではエラーになるか、意図しない結果になる。並べ替えもされない。 - イ:
GROUP BY 部署コードは部署コードでグループ化し、集約関数なしではエラーか不正確な結果。並べ替えもされない。 - ウ:
ORDER BY 社員コード、部署コードは社員コード優先で並べ替えるため、実行結果Bの並び順と異なる。 - エ:
ORDER BY 部署コード、社員コードは実行結果Bの並び順と完全に一致し、正解。
よくある誤解
GROUP BYは並べ替えのために使うと思い込むことがありますが、実際は集約関数と組み合わせてグループ化するための句です。単純な並べ替えはORDER BYを使います。
補足コラム
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, 並べ替え、集約関数、データベース

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

