まずはじめに、グループ関数の基本構文についてです。
▶ グループ関数の基本構文
関数名([DISTINCT | ALL] {列名 | 式})
SELECT句、ORDER BY句、および後述するHAVING句で使用できます。WHERE句では使用できません。
グループ関数は、グループごとに集計した結果を1つだけ戻します。クラスごとにテストの平均点を求める場合のように複数のグループがある場合は、グループの数だけ結果を戻します。
引数には、列名または列名を含む式を指定できます。また、重複した値に対する処理方法をオプションとして指定できます。
▶ 指定できるオプション
DISTINC ・・・ 重複した値は1回だけ処理する
ALL・・・重複した値を含む、すべての値を処理する。(デフォルト値)
▶ WHERE句を使用した場合
以下の例では、COUNT関数をWHERE句に指定しているためエラーになっています。
SQL> SELECT deptno, job, COUNT(*), AVF(sal)
2 FROM employees
3 WHERE COUNT(*) >= 2;
WHERE COUNT(*) >= 2
*
行3でエラーが発生しました。:
ORA-00934: ここではグループ関数は使用できません。
グループ関数を条件の一部として指定したい場合は、後述する「HAVING句」を使用します。ここでは「グループ関数はWHERE句では使用できない」ということを覚えておきましょう!