データベーススペシャリスト 平成23年特別 午前U 問6

午前U 問6

次のSQL文によって"会員"表から新たに得られる表はどれか。
06.gif/image-size:415×161
  • [この問題の出題歴]
  • データベース H14春期 問28

分類

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

正解

解説

SQL文のGROUP BY句は指定された属性をグループ化する命令、HAVING句はGROUP BY句でまとめたグループに対してWHERE句のように抽出条件を記述し、指定した条件を満たすグループのみを取り出す句です。

問題のSQL文を分解すると、以下のように解釈できます。
FROM 会員
GROUP BY グル―プ
会員表をグループ列を基準にグループ化する。
HAVING COUNT(*) > 1
含まれる行数が1より大きいグループを取り出す。
SELECT AVG(年齢)
グループごとに年齢の平均(AVG)を集計した列を表示する。

まず"グループ"列を基準に会員表をグループ化します。
06_1.gif/image-size:178×136
その中で行数が1より大きいグループを取り出します。Aのグループは1行しかないのでHAVING句で抽出対象から除外されます。
06_2.gif/image-size:178×117
グループごとに年齢の平均を計算し、AVG(年齢)行を結果として表示します。グループがBである会員は2人で、それぞれ年齢が20,40なので平均は30歳、グループがCである会員は3人で、それぞれ年齢が30,40,50なので平均は40歳になります。
06u.gif/image-size:74×65
© 2016-2019 データベーススペシャリストドットコム All Rights Reserved.

Pagetop