HOME»データベーススペシャリスト平成23年特別»午前Ⅱ 問6
データベーススペシャリスト平成23年特別 午前Ⅱ 問6
問6
次のSQL文によって"会員"表から新たに得られる表はどれか。
- [出題歴]
- データベース H14春期 問28
分類
テクノロジ系 » データベース » データ操作
正解
ウ
解説
SQL文のGROUP BY句は指定された属性をグループ化する命令、HAVING句はGROUP BY句でまとめたグループに対してWHERE句のように抽出条件を記述し、指定した条件を満たすグループのみを取り出す句です。
問題のSQL文を分解すると、以下のように解釈できます。
まず"グループ"列を基準に会員表をグループ化します。その中で行数が1より大きいグループを取り出します。Aのグループは1行しかないのでHAVING句で抽出対象から除外されます。グループごとに年齢の平均を計算し、AVG(年齢)行を結果として表示します。グループがBである会員は2人で、それぞれ年齢が20,40なので平均は30歳、グループがCである会員は3人で、それぞれ年齢が30,40,50なので平均は40歳になります。
問題のSQL文を分解すると、以下のように解釈できます。
FROM 会員
GROUP BY グル―プ
会員表をグループ列を基準にグループ化する。GROUP BY グル―プ
HAVING COUNT(*) > 1
含まれる行数が1より大きいグループを取り出す。SELECT AVG(年齢)
グループごとに年齢の平均(AVG)を集計した列を表示する。まず"グループ"列を基準に会員表をグループ化します。その中で行数が1より大きいグループを取り出します。Aのグループは1行しかないのでHAVING句で抽出対象から除外されます。グループごとに年齢の平均を計算し、AVG(年齢)行を結果として表示します。グループがBである会員は2人で、それぞれ年齢が20,40なので平均は30歳、グループがCである会員は3人で、それぞれ年齢が30,40,50なので平均は40歳になります。