【SQL – Oracle】グループ関数(複数行関数)について

【SQL – Oracle】グループ関数(複数行関数)について

ここでは、グループ関数について学んだことをまとめています。
グループ関数は「複数件の入力データをグループ化して、集計処理を行った結果を1つだけ戻す関数」です。グループ関数には数値の平均値を求める関数や合計値をお止める関数などがあります。

グループ関数は「複数行関数」や「集計関数」と呼ばれることがあります。

グループ関数について

まずはじめに、グループ関数の基本構文についてです。

▶ グループ関数の基本構文
  関数名([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句では使用できない」ということを覚えておきましょう!

 

まとめ

▶ グループ関数は、行のグループごとに集計した結果を1つだけ戻す

▶ グループ関数はSELECT句、ORDER BY句、HAVING句で使用できる

▶ グループ関数はWHERE句では使用できない

▶ DISTINCを指定すると重複した値は1回だけ処理される

コメントを残す