跳转到主内容
跳转到主内容

argAndMax

argAndMax

引入版本:v1.1

计算最大 val 值所对应的 argval 值。如果存在多行具有相同的最大 val 值,则返回哪个关联的 argval 是不确定的。 argmax 两部分均表现为聚合函数,它们在处理过程中都会跳过 Null,并在有非 Null 值可用时返回非 Null 值。

注意

argMax 的唯一区别在于,argAndMax 会同时返回参数和值。

另请参阅

语法

argAndMax(arg, val)

参数

返回值

返回一个元组,该元组包含与最大 val 值对应的 arg 值以及最大 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'))        │
└──────────────────────┘

另请参阅