スポンサーリンク

問題の解答・解説ページ

このページは解説の閲覧モードです。
実力試しをしたい方は、下のボタンからクイズに挑戦してください!

この問題をクイズ形式で解く
問題 No.2600
ある企業の人事管理システムにおいて、従業員テーブルから部署ごとの平均給与を算出するため、データベース管理者がSQLを用いて集計処理を行うことになった。この操作において、データをグループ化して集計を行う際に用いる句として、最も適切なものはどれか。

【正解の解説】

GROUP BY句を指定し、特定の列を基準として行をグループにまとめて集計を行う。

学校のクラス全員のテスト用紙を「組ごと」に山分けして整理する作業に似ています。データベースの世界でも、部署ごとの平均給与を出すためには、「営業部」「開発部」といったようにデータをグループに分ける必要があり、その仕分け作業を担当するのがこのGROUP BY句です。

スポンサーリンク

【その他の選択肢の解説】

ORDER BY句を指定し、特定の列を基準として行を並べ替えてから集計を行う。

初学者が「データを整理する」という言葉からグループ化と混同しがちですが、ORDER BYは単に背の順やテストの点数順に並べ直すだけです。並び替えとグループ化は目的が全く異なるため、平均値を出す際にはグループ化の機能を持つ別の構文を使う必要があります。

HAVING句を指定し、特定の条件に合致する行だけを絞り込んでから集計を行う。

WHERE句と似ていますが、決定的な違いは「集計した後の結果」に対して条件をかける点です。例えば「平均給与が50万円以上の部署だけを表示する」というように、グループ化して計算が終わった後のデータにフィルタをかける役割を持っているため、集計そのものを行うことはできません。

WHERE句を指定し、特定の条件を満たす行をあらかじめ抽出して集計を行う。

データ全体から「正社員のみ」や「東京勤務のみ」というように、不要な行を最初からはじき出すフィルターの役割をします。集計の前段階で個別のデータを絞り込むためのものなので、部署ごとのグループを作って平均値を計算する役割自体は持っていません。