Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Fonction d’agrégation
S’applique à :
Databricks SQL
Databricks Runtime
Retourne la valeur d’une expression associée à la plus grande valeur d’une deuxième expression dans un groupe. Avec le troisième argument facultatif, retourne un tableau de valeurs pouvant correspondre aux limit valeurs les plus importantes de l’expression de classement.
Syntaxe
max_by(expr, ordExpr) [FILTER ( WHERE cond ) ]
max_by(expr, ordExpr, limit) [FILTER ( WHERE cond ) ]
Cette fonction peut également être appelée en tant que fonction de fenêtre à l’aide de la clause OVER.
Arguments
- expr : expression dont la valeur doit être retournée. Il peut s’agir de n’importe quel type de données.
- ordExpr : expression utilisée pour déterminer la valeur maximale (la clé de tri). Doit être un type ordonné.
-
limite : (Facultatif) Valeur
INTreprésentant le nombre maximal de valeurs à retourner. Doit être supérieur à 0 et inférieur ou égal à 100 000. Lorsqu’elle est fournie, la fonction retourne un tableau allant jusqu’àlimitdes valeurs. - cond : expression booléenne facultative filtrant les lignes utilisées pour l’agrégation.
Retours
Sans limit: le type de résultat correspond au type de expr. Si plusieurs lignes ont la même valeur maximale, ordExprle résultat est non déterministe.
Avec limit: une ARRAY valeur dont le type d’élément correspond au type de expr. Le tableau contient jusqu’à des limit éléments. Les valeurs correspondant aux NULL classements ne sont pas incluses. Si toutes les valeurs de classement sont NULL, le résultat est NULL. Si plusieurs lignes partagent les mêmes valeurs les plus importantes, la fonction n’est pas déterministe.
Remarque
Pour certains classements STRING, tels que UTF8_LCASE, le résultat peut également être non déterministe.
Exemples
> SELECT max_by(x, y, 2) FROM VALUES (('a', 10)), (('b', 50)), (('c', 20)) AS tab(x, y);
[b, c]
-- Return top 2 values by ordering expression
> SELECT year, max_by(course, earnings, 2) FROM data GROUP BY year;
year: 2012, max_by(course, earnings, 2): [Java, c]
> SELECT max_by(x, y COLLATE UTF8_LCASE) FROM VALUES (('a', 'X')), (('b', 'x')), (('c', 'v')) AS tab(x, y);
a (or b)