SELECT クラス名, AVG(点数) FROM 試験結果
GROUP BY クラス名 HAVING AVG(点数) >= 600
イ
SELECT クラス名, AVG(点数) FROM 試験結果
WHERE 受験年月日 BETWEEN ‘2014-04-01’ AND ‘2015-03-31’
GROUP BY クラス名 HAVING AVG(点数) >= 600
ウ
SELECT クラス名, AVG(点数) FROM 試験結果
WHERE 受験年月日 BETWEEN ‘2014-04-01’ AND ‘2015-03-31’
GROUP BY クラス名 HAVING 点数 >= 600
エ
SELECT クラス名, AVG(点数) FROM 試験結果
WHERE 点数 >= 600
GROUP BY クラス名
HAVING (MAX(受験年月日)
BETWEEN ‘2014-04-01’ AND ‘2015-03-31’)
答え イ
【解説】
取得するデータは、2014年度の平均点数が600点以上となったクラスのクラス名と平均点数の一覧なので、受験年月日が2014年度(2014年4月1日〜2015年3月31日)であることと、クラス毎の平均点(AVG())が600点以上であることが条件になるので、求めるSQL文は、 SELECT クラス名, AVG(点数) FROM 試験結果
WHERE 受験年月日 BETWEEN ‘2014-04-01’ AND ‘2015-03-31’
GROUP BY クラス名 HAVING AVG(点数) >= 600
(イ)になります。
【キーワード】
・HAVING
【キーワードの解説】
HAVING
GROUP BY句によってグループ化されたデータに対し、検索条件を指定し絞り込むことを目的としたSQLの句です。
検索条件の絞り込みというとWHRE句が使われますが、SQL文の評価はWHERE句、GROUP BY句の順で行われるため、GROUP BY句によるグループ化した結果を利用する集計関数に対してWHERE句による条件指定を行うことはできないため、HAVING句を使用します。