Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:
Databricks SQL
Databricks Runtime
Restituisce il valore di un'espressione associata al valore più piccolo di una seconda espressione in un gruppo. Con il terzo argomento facoltativo, restituisce una matrice di valori fino ai limit valori più piccoli dell'espressione di ordinamento. La semantica è la stessa della max_by funzione di aggregazione con l'ordinamento opposto.
Sintassi
min_by(expr, ordExpr) [FILTER ( WHERE cond ) ]
min_by(expr, ordExpr, limit) [FILTER ( WHERE cond ) ]
Questa funzione può anche essere richiamata come funzione finestra usando la clausola OVER.
Argomenti
- expr: espressione il cui valore deve essere restituito. Può essere qualsiasi tipo di dati.
- ordExpr: espressione usata per determinare il valore minimo (chiave di ordinamento). Deve essere un tipo ordinabile.
-
limit: (Facoltativo) Valore
INTche rappresenta il numero massimo di valori da restituire. Deve essere maggiore di 0 e minore o uguale a 100.000. Se specificato, la funzione restituisce una matrice di valori fino alimit. - cond: espressione booleana facoltativa che filtra le righe usate per l'aggregazione.
Restituzioni
Senza limit: il tipo di risultato corrisponde al tipo di expr. Se più righe hanno lo stesso valore minimo di ordExpr, il risultato non è deterministico.
Con limit: un ARRAY di valori il cui tipo di elemento corrisponde al tipo di expr. La matrice contiene fino a limit elementi. I valori corrispondenti agli NULL ordini non sono inclusi. Se tutti i valori di ordinamento sono NULL, il risultato è NULL. Se più righe condividono gli stessi valori più piccoli, la funzione non è deterministica.
Nota
Per alcune collazioni STRING, ad esempio UTF8_LCASE, il risultato può essere non deterministico.
Esempi
> 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)