max_by agregační funkce

Platí pro:zaškrtnuto ano Databricks SQL zaškrtnuto ano 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:zaškrtnuto jako ano Databricks SQL zaškrtnuto jako ano 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 INT př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ž hodnot limit .
  • 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)