Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
Databricks SQL
Databricks Runtime
Vrátí hodnotu výrazu přidruženého k největší hodnotě druhého výrazu ve skupině. S nepovinným třetím argumentem vrátí pole až hodnoty limit odpovídající největším hodnotám výrazu řazení.
Syntaxe
max_by(expr, ordExpr) [FILTER ( WHERE cond ) ]
Platí pro:
Databricks SQL
Databricks Runtime 18.1 a vyšší
max_by(expr, ordExpr, limit) [FILTER ( WHERE cond ) ]
Tuto funkci lze také vyvolat jako funkci okna pomocí klauzule OVER.
Argumenty
- výraz: Výraz, jehož hodnota má být vrácena. Může to být libovolný datový typ.
- ordExpr: Výraz použitý k určení maximální hodnoty (klíč řazení). Musí být seřazený typ.
-
limit: (Volitelné) Hodnota
INTpředstavující maximální počet hodnot, které se mají vrátit. Musí být větší než 0 a menší nebo rovno 100 000. Pokud je tato funkce za předpokladu, vrátí matici až hodnotlimit. - cond: Volitelný logický výraz filtrující řádky použité pro agregaci.
Návraty
Bez limit: typ výsledku odpovídá typu expr. Pokud má více řádků stejnou maximální hodnotu ordExpr, výsledek není deterministický.
S limit: ARRAY hodnoty, jejichž typ prvku odpovídá typu expr. Pole obsahuje až limit prvky. Hodnoty odpovídající NULL řazení nejsou zahrnuty. Pokud jsou NULLvšechny hodnoty řazení , výsledek je NULL. Pokud více řádků sdílí stejné největší hodnoty, funkce není deterministická.
Poznámka
U některých STRING kolací, například UTF8_LCASE, může být výsledek také ne deterministický.
Příklady
> 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)