メインコンテンツへスキップ
メインコンテンツへスキップ

argAndMin

argAndMin

導入バージョン: v1.1

最小の val 値に対応する argval の値を計算します。 最小となる val が同じ行が複数存在する場合、どの行に対応する arg および val が返されるかは決定されていません。 argmin はどちらも 集約関数として動作し、処理中に Null をスキップし、Null ではない値が存在する場合は Null ではない値を返します。

注記

argMin との唯一の違いは、argAndMin が引数と値の両方を返す点です。

関連項目

構文

argAndMin(arg, val)

引数

返される値

最小の 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)    │
└──────────────────────┴─────────────┘

関連項目