平成23年特別試験問題 午前Ⅱ 問6
正解 ウ問題へ
分野:テクノロジ系
中分類:データベース
小分類:データ操作
中分類:データベース
小分類:データ操作
広告
解説
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歳になります。
広告