Oracle SQL 関数 : AVG : データの平均値を返す

 numberRet := AVG( [ALL , DISTINCT] <expr> )

AVGは集計関数、または分析関数として使用します。
<expr>がNULLの項目は計算されません。また、DISTINCT指定の場合は重複行は計算されません。
デフォルトでは ALL の処理となります。

以下の様な担当者テーブルを例にとり、給料の平均値を求めてみます。
(尚、担当者コード「8」の給料は意図的に NULL にしました。)

SQL> SELECT * FROM TM_担当者;

担当者コード 上司コード 部門コード 担当者名                         生年月日       給料
------------ ---------- ---------- -------------------------------- -------- ----------
           1                     1 斎藤                             60-04-05     200000
           2                     1 山田                             57-10-15     250000
           3                     1 田中                             62-07-08     240000
           4          1          1 島田                             67-05-05     180000
           5          1          2 鈴木                             70-06-04     190000
           6          1          2 田村                             75-08-01     210000
           7          2          3 山下                             72-03-18     300000
           8          2          3 山村                             76-09-18
           9          3          3 多田                             78-12-10     200000

9行が選択されました。

以下のSQL文を見て下さい。最初のSQL文は全てのテーブルに対して「給料」の平均値を取得しています。
二つ目のSQL文は「部門コード」でグループ化を行いそれぞれの「給料」の平均値を取得します。

SQL> SELECT COUNT(給料), SUM(給料), AVG(給料) FROM TM_担当者;

COUNT(給料)  SUM(給料)  AVG(給料)
----------- ---------- ----------
          8    1770000     221250

SQL> SELECT 部門コード, COUNT(給料), SUM(給料), AVG(給料) FROM TM_担当者
  2  GROUP BY 部門コード;

部門コード COUNT(給料)  SUM(給料)  AVG(給料)
---------- ----------- ---------- ----------
         1           4     870000     217500
         2           2     400000     200000
         3           2     500000     250000

SQL> 

「AVG(給料)」の値は「SUM(給料)」を「COUNT(給料)」で割った結果になっています。
尚、結果から担当者コード「8」のデータは除外されていることは「COUNT(給料)」の値を見ても分かると思います。