Top > SQL 関数一覧 (A‐D) > AVG(集計関数)

グループの平均値を求める

syntax

AVG ( [ DISTINCT | ALL ] expr )
return [ NUMBER ]

parameter

expr数値式

return

  • グループ内の平均値を戻す。

avail

  • SQL でのみ使用可能。(PL/SQL の埋め込み SQL 含む)

AVG 集計関数の内容

グループにおける 数値式 expr の平均値を戻す。

AVG 関数の追加説明と注意事項

AVG 関数の引数に DISTINCT を指定して平均を求めると重複した数値を1レコードとして処理される。
デフォルトは AVG ( ALL expr ) で動作し、 すべての数値(NULL は含まず)の平均を求める。

一般的にはグループ単位の平均を求める。⇒ GROUP BY 句 を使用していない場合には選択による結果セット(条件によって選択されたレコード) を1つのグループとして全体の平均を1レコード戻す。

注意

AVG 関数やその他の集計関数において NULL 値 は 「未定義」をあらわす。「未定義」のデータは平均値を計算するときに分子にも分母にも加算されない。これは NULL のレコードが何レコードあっても計算結果に一切影響を与えないということ。
NULL のレコードを 1 件として扱うには NULL 値を 0 などの数値として明示的に変換する必要がある
変換例 ⇒ AVG ( NVL ( expr, 0 ) ) ⇒ NVL 関数

該当データが無い場合、NULL しかデータが存在しない場合には AVG 関数は NULL を戻す。

AVG 使用例

AVG 関数 サンプルデータ
namedeptsalary
鈴木管理部300,000700,000
高橋管理部400,000
佐藤開発部500,0001,200,000
小林開発部500,000
山本開発部200,000
青木開発部NULL

AVG と NVL を伴った AVG の違い

SQL> select dept, AVG(salary), AVG(nvl(salary, 0)),
  2         count(salary) cnt, count(nvl(salary, 0)) nvl_cnt
  3   from avg_sample
  4  group by dept;
 
DEPT         AVG(SALARY) AVG(NVL(SALARY,0))        CNT    NVL_CNT
------------ ----------- ------------------ ---------- ----------
管理部            350000             350000          2          2
開発部            400000             300000          3          4

DISTINCT と ALL の違い

SQL> select dept, AVG(salary), AVG(distinct salary) from avg_sample
  2  group by dept;
 
DEPT         AVG(SALARY) AVG(DISTINCTSALARY)
------------ ----------- -------------------
管理部            350000              350000
開発部            400000              350000

GROUP BY なしでの平均値

SQL> select AVG(salary), count(salary) from avg_sample;
 
AVG(SALARY) COUNT(SALARY)
----------- -------------
     380000             5


SQL 関数 - AVG 関連

 
アルファベット別 関数一覧 ショートカット
ABCDEFG
HILMNOP
RSTUVWX
日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ Oracle Web セミナー