正解は ウ
SQL の集計とグループ化に関する問題です。「学生ごとに全科目の平均点を算出し、平均が80点以上の学生」を求めるには、2つの要素が必要です。第一に、学生ごとの集計を行うために GROUP BY 学生番号 でグループ化すること。第二に、グループ化後の集計値(AVG(点数))に対する条件を HAVING 句で指定することです。したがって空欄 a には「学生番号 HAVING AVG(点数) >= 80」が入り、ウが正解です。ここで最重要の知識は WHERE と HAVING の使い分けです。WHERE はグループ化の前に個々の行を絞り込む条件であり、AVG や SUM などの集計関数を書くことはできません。一方 HAVING はグループ化の後にグループ(集計結果)を絞り込む条件であり、集計関数を使えます。本問のように「平均が80以上」という集計値への条件は、必ず HAVING に書く必要があります。SELECT 文の評価順序(FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY)を理解しておくと、この使い分けが自然に身につきます。
WHERE は行の絞り込み(集計関数不可・GROUP BY の前)、HAVING はグループの絞り込み(集計関数可・GROUP BY の後)。「平均が〜以上」と来たら HAVING AVG(...) で確定。