Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:
Databricks SQL
Databricks Runtime
Возвращает значение выражения, связанного с наименьшим значением второго выражения в группе. При использовании дополнительного третьего аргумента возвращает массив до limit значений, соответствующих наименьшим значениям выражения упорядочивания. Семантика совпадает с max_by агрегатной функцией с противоположным упорядочением.
Синтаксис
min_by(expr, ordExpr) [FILTER ( WHERE cond ) ]
min_by(expr, ordExpr, limit) [FILTER ( WHERE cond ) ]
Эту функцию также можно вызвать как функцию окна с помощью OVER предложения.
Аргументы
- expr: выражение, значение которого должно быть возвращено. Может быть любым типом данных.
- ordExpr: выражение, используемое для определения минимального значения (ключа сортировки). Должен быть упорядоченным типом.
-
limit: (Необязательно) Значение
INT, представляющее максимальное количество возвращаемых значений. Должно быть больше 0 и меньше или равно 100 000. При указании функция возвращает массив до значенийlimit. - cond: необязательное логическое выражение, фильтрующее строки, используемые для агрегирования.
Возвраты
Без limit: тип результата соответствует типу expr. Если несколько строк имеют одинаковое минимальное значение ordExpr, результат не детерминирован.
С limit: ARRAY значения, тип элемента которых соответствует типу expr. Массив содержит до limit элементов. Значения, соответствующие упорядочению NULL , не включаются. Если все значения упорядочения являются, результатом является NULLNULL. Если несколько строк имеют одинаковые наименьшие значения, функция не детерминирована.
Заметка
Для определенных STRING сортировок, таких как UTF8_LCASE, результат может быть недетерминированным.
Примеры
> SELECT min_by(x, y) FROM VALUES (('a', 10)), (('b', 50)), (('c', 20)) AS tab(x, y);
a
> SELECT min_by(x, y, 2) FROM VALUES (('a', 10)), (('b', 50)), (('c', 20)) AS tab(x, y);
[a, c]
> SELECT min_by(x, y COLLATE UTF8_LCASE) FROM VALUES (('a', 'X')), (('b', 'x')), (('c', 'Z')) AS tab(x, y);
a (or b)