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
arg— Argument dont on cherche la valeur maximale.const Stringval— La valeur maximale.(U)Int8/16/32/64ouFloat*ouDateouDateTimeouTuple
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