Поделиться через


Агрегатная функция mean

Область применения: флажок Databricks SQL флажок Databricks Runtime

Возвращает среднее значение, вычисленное на основе значений группы. Эта функция является синонимом агрегатной функции avg.

Синтаксис

mean ( [ALL | DISTINCT] expr ) [FILTER ( WHERE cond ) ]

Эту функцию также можно вызвать как функцию окна с помощью OVER предложения.

Аргументы

  • expr: выражение, значением которого является число.
  • cond: необязательное логическое выражение для фильтрации строк, используемых для агрегирования.

Возвраты

Тип результата определяется на основе аргументов:

  • DECIMAL(p, s): результат имеет тип DECIMAL(p + 4, s + 4). Если достигнута максимальная точность для типа DECIMAL, увеличение масштаба ограничивается, чтобы избежать потери значащих цифр.
  • для интервала типа "год-месяц": тип результата INTERVAL YEAR TO MONTH.
  • для интервала типа "время дня": тип результата INTERVAL DAY TO SECOND.
  • Во всех остальных случаях результатом является значение DOUBLE.

Значения NULL в группе игнорируются. Если группа пуста или состоит только из значений NULL, возвращается результат NULL.

Если указано значение DISTINCT, вычисляется среднее значение после удаления дубликатов.

Предупреждение

В Databricks Runtime, если spark.sql.ansi.enabledfalse, то переполнение возвращается NULL вместо ошибки.

Примеры

> SELECT mean(col) FROM VALUES (1), (2), (3) AS tab(col);
 2.0

> SELECT mean(DISTINCT col) FROM VALUES (1), (1), (2), (NULL) AS tab(col);
 1.5

> SELECT mean(col) FROM VALUES (1), (2), (NULL) AS tab(col);
 1.5