Агрегатная функция mode
Область применения: Databricks SQL Databricks Runtime 11.3 LTS и выше
Возвращает наиболее частое значение, а не NULL
, которое является значением expr
в группе.
mode
— это недетерминированная функция, если только deterministic
settrue
.
Синтаксис
mode(expr [, deterministic ]) [FILTER ( WHERE cond ) ]
Эту функцию также можно вызвать как функцию window с помощью предложения OVER
.
Аргументы
expr
Выражение любого типа, которое можно сравнить.
deterministic
В Databricks SQL и Databricks Runtime 14.1 и выше. Необязательное константное
BOOLEAN
выражение. Еслиtrue
гарантирует детерминированный результат, если существует несколько values с одной частотой.cond
Необязательное
BOOLEAN
выражение, фильтрующее строки, используемые для агрегирования.
Возвраты
Тип результата соответствует типу аргумента.
Если группа содержит только значения NULL, функция возвращает NULL
.
Результат недетерминирован, если для наиболее частого значения имеется такое же значение.
Заметка
Даже если deterministic
settrue
, результаты могут быть недетерминированными для определенных STRING
параметров сортировки, таких как UTF8_LCASE
.
Примеры
> SELECT mode(col) FROM VALUES (NULL), (1), (NULL), (2), (NULL), (3), (3) AS tab(col);
3
> SELECT mode(col) FROM VALUES (array(1, 2)), (array(1, 2)), (array(2, 3)) AS tab(col);
[1, 2]
-- The function returns either 1 or 2, but not 3
> SELECT mode(col) FROM VALUES (1), (1), (2), (2), (3) AS tab(col);
1
> SELECT mode(col) FROM VALUES (NULL), (NULL) AS tab(col);
NULL
> SELECT mode(col COLLATE UTF8_LCASE, true) FROM VALUES('a'), ('A'), ('b') AS tab(col);
a (or A)