Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

argAndMax

argAndMax

導入バージョン: v1.1.0

最大の val に対応する argval を計算します。 最大値である同じ val を持つ行が複数ある場合、対応する argval のうちどれが返されるかは決定論的ではありません。 arg 部分と max 部分はどちらも 集約関数 として動作し、処理中はともに Null をスキップ し、Null 以外の値が存在する場合は Null 以外の値を返します。

関連項目

構文

argAndMax(arg, val)

引数

戻り値

最大の val 値に対応する arg の値と、その最大の val 値を含むタプルを返します。Tuple

基本的な使い方

CREATE TABLE salary
(
    user String,
    salary UInt32
)
ENGINE = Memory AS
SELECT *
FROM VALUES(('worker', 1000), ('manager', 3000), ('director', 5000));

SELECT argAndMax(user, salary) FROM salary;
┌─argAndMax(user, salary)─┐
│ ('director',5000)       │
└─────────────────────────┘

NULL処理を含む拡張例

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;
┌─argMax(a, b)─┬─argAndMax(a, b)─┬─max(b)─┐
│ b            │ ('b',2)         │      3 │
└──────────────┴─────────────────┴────────┘

引数でTupleを使用する

SELECT argAndMax(a, (b,a)) FROM test;
┌─argAndMax(a, (b, a))─┐
│ ('c',(2,'c'))        │
└──────────────────────┘

関連項目

Navigation