グループ関数(avg,sumなどなど)はwhere句では使用することが出来ません。以下、SQLはエラーになります。
select class,avg(english)
from test
where avg(english) > 60
group by class;
クラスごとで、英語の平均点が60点以上のクラスを取得するSQLですが、
「ORA-000934:ここではグループ関数は使用できません。」 というエラーが返ってきます。
では、どこで条件を指定するかというと
having句 で指定します。
上記SQLのwhereをhavingに変更します
select class,avg(english)
from test
having avg(english) > 60
group by class;
するとSQLは意図したとおりに実行されます。グループ関数はselect句やhaving句、order by句で使用できるのです。