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

問29

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

〔SQL文〕
 SELECT AVG(年齢)
  FROM 会員
  GROUP BY グループ
  HAVING COUNT(*) > 1
29.png/image-size:178×151
  • 29a.png/image-size:69×43
  • 29i.png/image-size:68×43
  • 29u.png/image-size:69×61
  • 29e.png/image-size:69×80
  • [出典]
  • データベース H23特別 問6

分類

テクノロジ系 » データベース » データ操作

正解

解説

SQL文のGROUP BY句は指定された属性を値ごとにグループ化する命令、HAVING句はGROUP BY句と同時に使用され、後に記述された条件に合うグループだけを取り出すことができます。

問題のSQL文は「会員表のグループ列で同じ値を持つ行数が1より大きいものをグループ化し取り出す。グループ化された値ごとに年齢の平均(AVG)を集計した列を表示する」と解釈できます。
まずグループ列の値ごとにグループ化します。
29_1.png/image-size:178×151
その中で行数が1より大きいグループを取り出します。Aのグループは1行しかないのでこの条件で除外されます。
29_2.png/image-size:178×132
グループごとに年齢の平均を計算し、AVG(年齢)行を結果として表示します。グループがBである会員は2人で、それぞれ年齢が20,40なので平均は30歳、グループがCである会員は3人で、それぞれ年齢が30,40,50なので平均は40歳になります。
29u.png/image-size:69×61
© 2010-2024 応用情報技術者試験ドットコム All Rights Reserved.

Pagetop