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

argAndMax

argAndMax

Появилось в версии v1.1

Вычисляет значения arg и val для максимального значения val. Если существует несколько строк с одинаковым максимальным значением val, то какая из соответствующих пар arg и val будет возвращена, не определено. Обе части — arg и max — ведут себя как агрегатные функции, обе пропускают Null при обработке и возвращают не-Null значения, если доступны не-Null значения.

Примечание

Единственное отличие от argMax состоит в том, что argAndMax возвращает и аргумент, и значение.

См. также

Синтаксис

argAndMax(arg, val)

Аргументы

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

Возвращает кортеж, содержащий значение arg, соответствующее максимальному значению val, и максимальное значение val. Tuple

Примеры

Базовое использование

SELECT argAndMax(user, salary) FROM salary;
┌─argAndMax(user, salary)─┐
│ ('director',5000)       │
└─────────────────────────┘

Расширенный пример с обработкой значений NULL

CREATE TABLE test
(
    a Nullable(String),
    b Nullable(Int64)
)
ENGINE = Memory AS
SELECT *
FROM VALUES(('a', 1), ('b', 2), ('c', 2), (NULL, 3), (NULL, NULL), ('d', NULL));

SELECT argMax(a, b), argAndMax(a, b), max(b) FROM test;
┌─argMax(a, b)─┬─argAndMax(a, b)─┬─max(b)─┐
│ b            │ ('b',2)         │      3 │
└──────────────┴─────────────────┴────────┘

Использование Tuple в аргументах

SELECT argAndMax(a, (b,a)) FROM test;
┌─argAndMax(a, (b, a))─┐
│ ('c',(2,'c'))        │
└──────────────────────┘

См. также