Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
Databricks SQL
Databricks Runtime
Retourneert de waarde van een expressie die is gekoppeld aan de grootste waarde van een tweede expressie in een groep. Met het optionele derde argument wordt een matrix geretourneerd van maximaal limit waarden die overeenkomen met de grootste waarden van de orderexpressie.
Syntaxis
max_by(expr, ordExpr) [FILTER ( WHERE cond ) ]
max_by(expr, ordExpr, limit) [FILTER ( WHERE cond ) ]
Deze functie kan ook worden aangeroepen als een vensterfunctie met behulp van de OVER component.
Argumenten
- expr: De expressie waarvan de waarde moet worden geretourneerd. Dit kan elk gegevenstype zijn.
- ordExpr: de expressie die wordt gebruikt om de maximumwaarde (de sorteersleutel) te bepalen. Moet een bestelbaar type zijn.
-
limiet: (Optioneel) Een
INTwaarde die het maximum aantal waarden aangeeft dat moet worden geretourneerd. Moet groter zijn dan 0 en kleiner dan of gelijk aan 100.000. Indien opgegeven, retourneert de functie een matrix van maximaallimitwaarden. - cond: Een optionele Booleaanse expressie die de rijen filtert die worden gebruikt voor aggregatie.
Retouren
Zonder limit: het resultaattype komt overeen met het type expr. Als meerdere rijen dezelfde maximumwaarde ordExprhebben, is het resultaat niet-deterministisch.
Met limit: een ARRAY van de waarden waarvan het elementtype overeenkomt met het type expr. De matrix bevat maximaal limit elementen. Waarden die overeenkomen met NULL volgordes, worden niet opgenomen. Als alle volgordewaarden zijn NULL, is NULLhet resultaat . Als meerdere rijen dezelfde grootste waarden delen, is de functie niet-deterministisch.
Notitie
Voor bepaalde STRING sorteringen, zoals UTF8_LCASE, kan het resultaat ook niet-deterministisch zijn.
Voorbeelden
> 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)