問題
SQL文「SELECT 部署, COUNT(*) FROM 社員 GROUP BY 部署」が返す結果はどれか。
選択肢
- 1ア 全社員の名前の一覧
- 2イ 部署ごとの社員数
- 3ウ 社員1人ずつの部署情報
- 4エ 最も多い部署名のみ
正解
2. イ 部署ごとの社員数
詳しい解説を見る解説を閉じる
解説
正解はイ。このSQL文はGROUP BY句によって社員表の行を部署ごとのグループにまとめ、集約関数COUNT(*)で各グループに属する行数(社員数)を数える。結果は「部署名とその部署の社員数」の組が部署の数だけ返される。アの全社員の名前一覧やウの社員1人ずつの部署情報は、GROUP BYのない通常のSELECT文の結果であり、集約は行われない。エの最も人数が多い部署だけを求めるには、ORDER BYやLIMIT、副問合せなどの追加処理が必要である。基本情報ではGROUP BYと集約関数(COUNT・SUM・AVG・MAX・MIN)の組合せが頻出であり、グループ化後の絞り込みにはWHEREではなくHAVING句を使うこと、SELECT句にはグループ化した列と集約関数しか指定できないことも併せて押さえたい。
一問一答
科目A 180問+科目B 60問