過去問解きまくり研究所 ホーム

平成23年度 特別 午前Ⅱ 問6

データ操作

集約関数に関する問題

次の SQL 文によって“会員”表から新たに得られる表はどれか。

〔SQL 文〕

SELECT AVG(年齢)
   FROM 会員
   GROUP BY グループ
   HAVING COUNT(*) > 1

会員

会員番号年齢グループ
00120B
00230C
00360A
00440C
00540B
00650C

選択肢は原典では列 AVG(年齢)だけの表。各肢は行の値を上から順に「/」で区切って書いた。

答えと解説を見る

✓ これが正解ウAVG(年齢):30 / 40

解説

行数が2以上のグループ B と C の平均、30 と 40 が残ります。

GROUP BY グループで行をグループごとにまとめ、HAVING COUNT(*) > 1 で行数が2以上のグループだけを残し、残ったグループごとに AVG(年齢) を求めます。表を分けると、A は会員003の1行で年齢60、B は001と005の2行で年齢20と40、C は002、004、006の3行で年齢30、40、50です。A は行数1なので HAVING で除かれます。B の平均は (20+40)÷2=30、C の平均は (30+40+50)÷3=40 です。結果は30と40の2行になり、正解の表と一致します。WHERE は行に、HAVING はグループに条件を付けるという違いを押さえると、集約関数の問を順に追えます。

ほかの選択肢はなぜ違うのか

出典:平成23年度 特別 データベーススペシャリスト試験 午前Ⅱ 問6

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)