跳转到主要内容

argAndMin

引入于:v1.1.0 计算最小 val 值对应的 argval。 如果有多行的 val 同为最小值,则返回其中哪一行对应的 argval 是非确定性的。 argmin 这两个部分都表现为聚合函数:它们在处理过程中都会跳过 Null,并且如果存在非 Null 值,就会返回非 Null 值。
它与 argMin 的唯一区别在于,argAndMin 同时返回参数和值。
另请参见 语法
argAndMin(arg, val)
参数 返回值 返回一个 Tuple,其中包含与最小 val 值对应的 arg 值,以及最小 val 值。Tuple 示例 基本用法
Query
SELECT argAndMin(user, salary) FROM salary;
Response
┌─argAndMin(user, salary)─┐
│ ('worker',1000)         │
└─────────────────────────┘
带 NULL 处理的扩展示例
Query
CREATE TABLE test
(
    a Nullable(String),
    b Nullable(Int64)
)
ENGINE = Memory AS
SELECT *
FROM VALUES((NULL, 0), ('a', 1), ('b', 2), ('c', 2), (NULL, NULL), ('d', NULL));

SELECT argMin(a,b), argAndMin(a, b), min(b) FROM test;
Response
┌─argMin(a, b)─┬─argAndMin(a, b)─┬─min(b)─┐
│ a            │ ('a',1)         │      0 │
└──────────────┴─────────────────┴────────┘
在参数中使用 Tuple
Query
SELECT argAndMin(a, (b, a)), min(tuple(b, a)) FROM test;
Response
┌─argAndMin(a, (b, a))─┬─min((b, a))─┐
│ ('a',(1,'a'))        │ (0,NULL)    │
└──────────────────────┴─────────────┘
另请参阅
最后修改于 2026年6月10日