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

argAndMin

argAndMin

引入于:v1.1

计算最小 val 对应的 argval。如果有多行的 val 相同且都是最小值,则返回哪一行对应的 argval 是不确定的。 arg 部分和 min 部分都像聚合函数一样工作,它们在处理过程中都会跳过 Null,并在存在非 Null 值时返回非 Null 值。

注意

argMin 的唯一区别是 argAndMin 会同时返回参数和取最小值的数值。

另请参阅

语法

argAndMin(arg, val)

参数

返回值

返回一个 tuple,其中包含与最小 val 值对应的 arg 值,以及该最小的 val 值。Tuple

示例

基本用法

SELECT argAndMin(user, salary) FROM salary;
┌─argAndMin(user, salary)─┐
│ ('worker',1000)         │
└─────────────────────────┘

包含 NULL 处理的扩展示例

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;
┌─argMin(a, b)─┬─argAndMin(a, b)─┬─min(b)─┐
│ a            │ ('a',1)         │      0 │
└──────────────┴─────────────────┴────────┘

在参数中使用元组(Tuple)

SELECT argAndMin(a, (b, a)), min(tuple(b, a)) FROM test;
┌─argAndMin(a, (b, a))─┬─min((b, a))─┐
│ ('a',(1,'a'))        │ (0,NULL)    │
└──────────────────────┴─────────────┘

另请参阅