min_by agregační funkce

Platí pro:zaškrtnuto Databricks SQL zaškrtnuto Databricks Runtime

Vrátí hodnotu výrazu přidruženého k nejmenší hodnotě druhého výrazu ve skupině. S volitelným třetím argumentem vrátí pole až hodnoty limit odpovídající nejmenším hodnotám výrazu řazení. Sémantika je stejná jako max_by agregační funkce s opačným pořadím.

Syntaxe

min_by(expr, ordExpr) [FILTER ( WHERE cond ) ]

Platí pro:zaškrtnuto jako ano Databricks SQL zaškrtnuto jako ano Databricks Runtime 18.1 a vyšší

min_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í minimá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 minimá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é nejmenší 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 min_by(x, y) FROM VALUES (('a', 10)), (('b', 50)), (('c', 20)) AS tab(x, y);
 a

> SELECT min_by(x, y, 2) FROM VALUES (('a', 10)), (('b', 50)), (('c', 20)) AS tab(x, y);
 [a, c]

> SELECT min_by(x, y COLLATE UTF8_LCASE) FROM VALUES (('a', 'X')), (('b', 'x')), (('c', 'Z')) AS tab(x, y);
 a (or b)