Функция AVG возвращает среднее арифметическое значение набора числовых значений.
<Значимое выражение>
в аргументе должно быть числовым типом данных или приводиться к нему.
Тип данных результата:
DECIMAL
, если тип аргументов INT
, SMALLINT
, BIGINT
, DECIMAL
;
DOUBLE
, если тип аргументов REAL
, DOUBLE
.
Функция применяется к набору значений, полученных из аргумента путем исключения 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;
Если указан DISTINCT
, дубликаты значений исключаются из подсчета.
Если функция применяется к пустому набору значений, результат 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|