跳转到主要内容

argAndMax

引入于:v1.1.0 计算最大 val 值对应的 argval。 如果有多行的 val 同为最大值,返回其中哪一行对应的 argval 是不确定的。 argmax 这两部分都按聚合函数的方式工作:它们在处理过程中都会跳过 Null,如果存在非 Null 值,就会返回非 Null 值。
argMax 的唯一区别在于,argAndMax 会同时返回参数和值。
另请参见 语法
argAndMax(arg, val)
参数 返回值 返回一个 Tuple,其中包含与最大 val 值对应的 arg 值,以及最大 val 值。Tuple 示例 基本用法
Query
SELECT argAndMax(user, salary) FROM salary;
Response
┌─argAndMax(user, salary)─┐
│ ('director',5000)       │
└─────────────────────────┘
NULL 处理的扩展示例
Query
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;
Response
┌─argMax(a, b)─┬─argAndMax(a, b)─┬─max(b)─┐
│ b            │ ('b',2)         │      3 │
└──────────────┴─────────────────┴────────┘
在参数中使用 Tuple
Query
SELECT argAndMax(a, (b,a)) FROM test;
Response
┌─argAndMax(a, (b, a))─┐
│ ('c',(2,'c'))        │
└──────────────────────┘
另见
最后修改于 2026年6月10日