Среднее арифметическое значений

 

Функция AVG возвращает среднее арифметическое значение набора числовых значений.

Синтаксические правила
  1. < Значимое выражение > в аргументе должно быть числовым типом данных или приводиться к нему.

Общие правила
  1. Тип данных результата:

    • DECIMAL, если тип аргументов INT, SMALLINT, BIGINT, DECIMAL;

    • DOUBLE, если тип аргументов REAL, DOUBLE.

  2. Функция применяется к набору значений, полученных из аргумента путем исключения NULL-значений, т.е. записи с NULL-значением не учитываются при подсчете записей.

    // среднее значение данных таблицы tst
    |1    |
    |2    |
    |3    |
    |NULL |
    |4    |
    
    // будет
    select avg(i) from "tst";
    |2.5 |

    Примечание

    Для учета записей с NULL-значением им надо явно присвоить значение. Например,

    select avg(case i when NULL then 0 else i end) from tab1;

    или

    select avg(nvl(i,0)) from tab1;
  3. Если указан DISTINCT, дубликаты значений исключаются из подсчета.

  4. Если функция применяется к пустому набору значений, результат NULL.

    Показать пятерку моделей автомобилей, которые предпочитают лица с самой высокой средней зарплатой:

    select auto.model, round(avg(person.salary)) as avg_mod 
      from auto,person
     where auto.personid=person.personid 
     group by auto.model 
     order by avg_mod desc limit 5;
     
     MODEL                AVG_MOD
     -----                -------
    |CAPRI RS 2600       |                 67400|
    |DINO SPIDER         |                 58182|
    |JAVELIN AMX V8      |                 57233|
    |XJ 6 4.2            |                 56829|
    |850 SPORT SPIDER    |                 56250|