Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:
Databricks SQL
Databricks Runtime
Devuelve el valor de una expresión asociada al valor más grande de una segunda expresión de un grupo. Con el tercer argumento opcional, devuelve una matriz de hasta valores correspondientes a limit los valores más grandes de la expresión de ordenación.
Sintaxis
max_by(expr, ordExpr) [FILTER ( WHERE cond ) ]
max_by(expr, ordExpr, limit) [FILTER ( WHERE cond ) ]
Esta función también se puede invocar como una función de ventana mediante la cláusula OVER.
Argumentos
- expr: expresión cuyo valor se va a devolver. Puede ser cualquier tipo de datos.
- ordExpr: expresión usada para determinar el valor máximo (la clave de ordenación). Debe ser un tipo ordenable.
-
limit: (Opcional) Valor
INTque representa el número máximo de valores que se van a devolver. Debe ser mayor que 0 y menor o igual que 100 000. Cuando se proporciona, la función devuelve una matriz de hastalimitvalores. - cond: expresión booleana opcional que filtra las filas usadas para la agregación.
Devoluciones
Sin limit: el tipo de resultado coincide con el tipo de expr. Si varias filas tienen el mismo valor máximo de ordExpr, el resultado es no determinista.
Con limit: de ARRAY valores cuyo tipo de elemento coincide con el tipo de expr. La matriz contiene hasta limit elementos. No se incluyen los valores correspondientes a NULL las ordenaciones. Si todos los valores de ordenación son NULL, el resultado es NULL. Si varias filas comparten los mismos valores más grandes, la función no es determinista.
Nota
Para ciertas intercalaciones de STRING, como UTF8_LCASE, el resultado también puede ser no determinista.
Ejemplos
> 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)