Перейти к содержимому
Последнее обновление

AVG

Описание​

Вычисляет среднее значение по всем значениям указанного столбца или выражения, за исключением NULL.

Синтаксис​

AVG([DISTINCT] <expr>)

Параметры​

ПараметрОписание
<expr>Выражение или столбец, обычно числовой столбец или выражение, которое можно преобразовать в числовое значение. Поддерживаемые типы: TinyInt, SmallInt, Integer, BigInt, LargeInt, Double, Decimal.
[DISTINCT]Необязательное ключевое слово, указывающее, что среднее значение вычисляется после удаления повторяющихся значений из expr.

Возвращаемое значение​

Возвращает среднее значение выбранного столбца или выражения. Если все записи в группе имеют значение NULL, функция возвращает NULL. Для входных данных типа decimal возвращаемое значение также имеет тип decimal; для других числовых типов возвращается значение типа double.

Пример​

-- setup
create table t1(
k_tinyint tinyint,
k_smallint smallint,
k_int int,
k_bigint bigint,
k_largeint largeint,
k_double double,
k_decimal decimalv3(10, 5),
k_null_int int
) distributed by hash (k_int) buckets 1
properties ("replication_num"="1");
insert into t1 values
(1, 10, 100, 1000, 10000, 1.1, 222.222, null),
(2, 20, 200, 2000, 20000, 2.2, 444.444, null),
(3, 30, 300, 3000, 30000, 3.3, null, null);
select avg(k_tinyint) from t1;

Вычисление среднего значения для типа TinyInt: среднее значение [1,2,3] равно 2.

+----------------+
| avg(k_tinyint) |
+----------------+
| 2 |
+----------------+
select avg(k_smallint) from t1;

Вычисление среднего значения для типа SmallInt: среднее значение [10,20,30] равно 20.

+-----------------+
| avg(k_smallint) |
+-----------------+
| 20 |
+-----------------+
select avg(k_int) from t1;

Вычисление среднего значения для типа Integer: среднее значение [100,200,300] равно 200.

+------------+
| avg(k_int) |
+------------+
| 200 |
+------------+
select avg(k_bigint) from t1;

Вычисление среднего значения для типа BigInt: среднее значение [1000,2000,3000] равно 2000.

+---------------+
| avg(k_bigint) |
+---------------+
| 2000 |
+---------------+
select avg(k_largeint) from t1;

Вычисление среднего значения для типа LargeInt: среднее значение [10000,20000,30000] равно 20000.

+-----------------+
| avg(k_largeint) |
+-----------------+
| 20000 |
+-----------------+
select avg(k_double) from t1;

Вычисление среднего значения для типа Double: среднее значение [1.1,2.2,3.3] приблизительно равно 2.2.

| avg(k_double)      |
+--------------------+
| 2.1999999999999997 |
select avg(k_decimal) from t1;

Вычисление среднего значения для типа Decimal: среднее значение [222.222,444.444,null] равно 333.333.

+----------------+
| avg(k_decimal) |
+----------------+
| 333.33300 |
+----------------+
select avg(k_null_int) from t1;

Если все входные данные имеют значение NULL, возвращается NULL.

+-----------------+
| avg(k_null_int) |
+-----------------+
| NULL |
+-----------------+
select avg(distinct k_bigint) from t1;

При вычислении с ключевым словом DISTINCT среднее значение [1000,2000,3000] после удаления дубликатов равно 2000.

+-----------------------+
| avg(distinct k_bigint) |
+-----------------------+
| 2000 |
+-----------------------+