オリジナル模擬試験2 問29
問29解説へ
次のSQL文によって“会員”表から新たに得られる表はどれか。
〔SQL文〕
〔SQL文〕
SELECT AVG(年齢)
FROM 会員
GROUP BY グループ
HAVING COUNT(*) > 1
FROM 会員
GROUP BY グループ
HAVING COUNT(*) > 1
広告
解説
SQL文のGROUP BY句は指定された属性を値ごとにグループ化する命令、HAVING句はGROUP BY句と同時に使用され、後に記述された条件に合うグループだけを取り出すことができます。
問題のSQL文は「会員表のグループ列で同じ値を持つ行数が1より大きいものをグループ化し取り出す。グループ化された値ごとに年齢の平均(AVG)を集計した列を表示する」と解釈できます。
まずグループ列の値ごとにグループ化します。その中で行数が1より大きいグループを取り出します。Aのグループは1行しかないのでこの条件で除外されます。グループごとに年齢の平均を計算し、AVG(年齢)行を結果として表示します。グループがBである会員は2人で、それぞれ年齢が20,40なので平均は30歳、グループがCである会員は3人で、それぞれ年齢が30,40,50なので平均は40歳になります。
問題のSQL文は「会員表のグループ列で同じ値を持つ行数が1より大きいものをグループ化し取り出す。グループ化された値ごとに年齢の平均(AVG)を集計した列を表示する」と解釈できます。
まずグループ列の値ごとにグループ化します。その中で行数が1より大きいグループを取り出します。Aのグループは1行しかないのでこの条件で除外されます。グループごとに年齢の平均を計算し、AVG(年齢)行を結果として表示します。グループがBである会員は2人で、それぞれ年齢が20,40なので平均は30歳、グループがCである会員は3人で、それぞれ年齢が30,40,50なので平均は40歳になります。
広告