オリジナル模擬試験2 問29

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

〔SQL文〕
 SELECT AVG(年齢)
  FROM 会員
  GROUP BY グループ
  HAVING COUNT(*) > 1
29.gif

  • 29a.gif
  • 29i.gif
  • 29u.gif
  • 29e.gif
正解 問題へ
分野:テクノロジ系
中分類:データベース
小分類:データ操作
解説
SQL文のGROUP BY句は指定された属性を値ごとにグループ化する命令、HAVING句はGROUP BY句と同時に使用され、後に記述された条件に合うグループだけを取り出すことができます。

問題のSQL文は「会員表のグループ列で同じ値を持つ行数が1より大きいものをグループ化し取り出す。グループ化された値ごとに年齢の平均(AVG)を集計した列を表示する。」と解釈できます。
まずグループ列の値ごとにグループ化します。
29_1.gif
その中で行数が1より大きいグループを取り出します。Aのグループは1行しかないのでこの条件で除外されます。
29_2.gif
グループごとに年齢の平均を計算し、AVG(年齢)行を結果として表示します。グループがBである会員は2人で、それぞれ年齢が20,40なので平均は30歳、グループがCである会員は3人で、それぞれ年齢が30,40,50なので平均は40歳になります。
29u.gif

出典


Pagetop