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


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

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

Возвращает наиболее частое значение, а не NULL, которое является значением expr в группе.

mode — это недетерминированная функция, если только deterministicsettrue.

Синтаксис

mode(expr [, deterministic ]) [FILTER ( WHERE cond ) ]

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

Аргументы

  • expr

    Выражение любого типа, которое можно сравнить.

  • deterministic

    В Databricks SQL и Databricks Runtime 14.1 и выше. Необязательное константное BOOLEAN выражение. Если true гарантирует детерминированный результат, если существует несколько values с одной частотой.

  • cond

    Необязательное BOOLEAN выражение, фильтрующее строки, используемые для агрегирования.

Возвраты

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

Если группа содержит только значения NULL, функция возвращает NULL. Результат недетерминирован, если для наиболее частого значения имеется такое же значение.

Заметка

Даже если deterministicsettrue, результаты могут быть недетерминированными для определенных 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)