Alias : max_by
argMax
Introduit dans : v1.1.0
Calcule la valeur arg correspondant à la valeur val maximale. S'il existe plusieurs lignes dont la valeur val est égale au maximum, la valeur arg associée renvoyée n'est pas déterministe.
arg et max se comportent tous deux comme des fonctions d'agrégation : ils ignorent Null pendant le traitement et renvoient des valeurs non Null si de telles valeurs sont disponibles.
Voir aussi
Syntaxe
argMax(arg, val)Alias : max_by
Arguments
arg— Argument dont on cherche la valeur correspondant au maximum.const Stringval— Valeur à maximiser.(U)Int8/16/32/64ouFloat*ouDateouDateTimeouTuple
Valeur renvoyée
Renvoie la valeur de arg correspondant à la valeur maximale de val. Le type renvoyé correspond à celui de arg.
Exemples
Utilisation de base
CREATE TABLE salary
(
user String,
salary UInt32
)
ENGINE = Memory AS
SELECT *
FROM VALUES(('worker', 1000), ('manager', 3000), ('director', 5000));
SELECT argMax(user, salary) FROM salary;┌─argMax(user, salary)─┐
│ director │
└──────────────────────┘Exemple détaillé avec gestion des valeurs 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), max(b) FROM test;┌─argMax(a, b)─┬─max(b)─┐
│ b │ 3 │
└──────────────┴────────┘Utilisation de Tuple dans les arguments
SELECT argMax(a, (b,a)) FROM test;┌─argMax(a, (b, a))─┐
│ c │
└───────────────────┘