argAndMin
Introduit dans : v1.1.0
Calcule les valeurs arg et val correspondant à la valeur minimale de val.
S’il existe plusieurs lignes dont val est égal au minimum, la paire arg/val associée qui est renvoyée n’est pas déterministe.
Les deux composantes, arg et min, se comportent comme des fonctions d’agrégation : elles ignorent Null lors du traitement et renvoient des valeurs non Null si de telles valeurs sont disponibles.
Voir aussi
Syntaxe
argAndMin(arg, val)Arguments
arg— Argument pour lequel rechercher la valeur minimale.const Stringval— La valeur minimale.(U)Int8/16/32/64ouFloat*ouDateouDateTimeouTuple
Valeur renvoyée
Renvoie un tuple contenant la valeur de arg correspondant à la valeur minimale de val, ainsi que cette valeur minimale de val. 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 argAndMin(user, salary) FROM salary;┌─argAndMin(user, salary)─┐
│ ('worker',1000) │
└─────────────────────────┘Exemple détaillé avec gestion de NULL
CREATE TABLE test
(
a Nullable(String),
b Nullable(Int64)
)
ENGINE = Memory AS
SELECT *
FROM VALUES((NULL, 0), ('a', 1), ('b', 2), ('c', 2), (NULL, NULL), ('d', NULL));
SELECT argMin(a,b), argAndMin(a, b), min(b) FROM test;┌─argMin(a, b)─┬─argAndMin(a, b)─┬─min(b)─┐
│ a │ ('a',1) │ 0 │
└──────────────┴─────────────────┴────────┘Utilisation de Tuple dans les arguments
SELECT argAndMin(a, (b, a)), min(tuple(b, a)) FROM test;┌─argAndMin(a, (b, a))─┬─min((b, a))─┐
│ ('a',(1,'a')) │ (0,NULL) │
└──────────────────────┴─────────────┘Voir aussi