Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

argAndMax

argAndMax

Introduit dans : v1.1.0

Calcule les valeurs arg et val correspondant à la valeur val maximale. S'il existe plusieurs lignes dont la valeur val est égale au maximum, le choix de arg et val renvoyé parmi les valeurs associées n'est pas déterministe. Les deux parties, arg et max, se comportent comme des fonctions d’agrégation : elles ignorent Null pendant le traitement et renvoient des valeurs non Null si des valeurs non Null sont disponibles.

Voir aussi

Syntaxe

argAndMax(arg, val)

Arguments

Valeur renvoyée

Renvoie un tuple contenant la valeur arg correspondant à la valeur val maximale, ainsi que la valeur val maximale. Tuple

Exemples

Utilisation de base

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)       │
└─────────────────────────┘

Exemple plus complet avec gestion de 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 │
└──────────────┴─────────────────┴────────┘

Utilisation de Tuple dans les arguments

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

Voir aussi

Navigation