SQL AVG 関数

AVGは平均値 (average) を返すSQL関数です。この記事では、AVGの使い方をサンプルを交えてご紹介します。

AVG
DBMS AVG
MySQL
Oracle
PostgreSQL
SQL Server

avgは平均値を返す集合関数です。

AVG([ALL|DISTINCT] expr)
ALL
重複する値もすべて含める(デフォルト)
SQL> SELECT sal FROM emp;

EMP
-------
   6000
   3000
   3000

SQL> SELECT AVG(ALL sal) FROM emp;

AVG(sal
-------
   4000
DISTINCT
重複する値は除外する
SQL> SELECT sal FROM emp;

EMP
-------
   6000
   3000
   3000

SQL> SELECT AVG(DISTINCT sal) FROM emp;

AVG(sal
-------
   4500

社員表(emp)から給料(sal)の平均値を求める。

SELECT AVG(sal) FROM emp

NULLの扱い

AVG 関数では、NULL は平均値を計算する分子にも分母にも影響を与えない。つまり、無視される。

SQL> SELECT sal FROM emp;

EMP
-------
   6000
   NULL
   4000

SQL> SELECT AVG(sal) FROM emp;

AVG(sal
-------
   5000

ただし、すべての値が NULL だった場合は、結果も NULL となる。

平均以上

平均以上の値を求めるには、副問い合わせを利用する。

SELECT sal FROM emp WHERE sal >= (SELECT AVG(sal) FROM emp);

平均以下

平均以下の値を求めるには、副問い合わせを利用する。

SELECT sal FROM emp WHERE sal <= (SELECT AVG(sal) FROM emp);