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

argAndMax

導入バージョン: v1.1.0 最大の val に対応する argval を計算します。 最大値である同じ val を持つ行が複数ある場合、対応する argval のうちどれが返されるかは決定論的ではありません。 arg 部分と max 部分はどちらも 集約関数 として動作し、処理中はともに Null をスキップ し、Null 以外の値が存在する場合は Null 以外の値を返します。
argMax との唯一の違いは、argAndMax が引数と値の両方を返すことです。
関連項目 構文
argAndMax(arg, val)
引数 戻り値 最大の 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日