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 le righe dei risultati in modo ordinato nell'ordine specificato dall'utente. A differenza della clausola SORT BY , questa clausola garantisce un ordine totale nell'output.
Sintassi
ORDER BY { { ALL [ sort_direction] [ nulls_sort_oder ] } |
{ expression [ sort_direction ] [ nulls_sort_oder ] } [, ...] }
sort_direction
[ ASC | DESC ]
nulls_sort_order
[ NULLS FIRST | NULLS LAST ]
Parametri
ALL
Si applica a:
Databricks SQL
Databricks Runtime 12.2 LTS e versioni successiveEspressione abbreviata equivalente a specificare tutte le espressioni nell'elenco
SELECTnell'ordine in cui si verificano. Sesort_directiononulls_sort_ordervengono specificati, si applicano a ogni espressione.-
Espressione di qualsiasi tipo utilizzata per stabilire un ordine in cui vengono restituiti i risultati.
Se l'espressione è un valore letterale
INTEGER, viene interpretata come una posizione di colonna nell'elenco di selezione.Se un valore letterale
INTEGERfa riferimento a una posizione non compreso nell'intervallo, Azure Databricks genera ORDER_BY_POS_OUT_OF_RANGE. sort_direction
Specifica l'ordinamento per l'ordine in base all'espressione.
-
ASC: la direzione di ordinamento per questa espressione è crescente. -
DESC: l'ordinamento per questa espressione è decrescente.
Se la direzione di ordinamento non viene specificata in modo esplicito, per impostazione predefinita le righe vengono ordinate in ordine crescente.
-
nulls_sort_order
Specifica facoltativamente se i valori NULL vengono restituiti prima o dopo valori non NULL. Se
null_sort_ordernon viene specificato, gli NUL ordinano prima se l'ordinamento èASCe NULLS ordinano per ultimo se l'ordinamento èDESC.-
NULLS FIRST: i valori NULL vengono restituiti prima indipendentemente dall'ordinamento. -
NULLS LAST: i valori NULL vengono restituiti per ultimo indipendentemente dall'ordinamento.
-
Se l'espressione ha un tipo di dati che non supporta l'ordinamento, ad esempio MAP, Azure Databricks genera DATATYPE_MISMATCH. INVALID_ORDERING_TYPE.
Quando si specificano più espressioni di ordinamento si verifica da sinistra a destra. Tutte le righe vengono ordinate in base alla prima espressione. Se sono presenti valori duplicati per la prima espressione, viene usata la seconda espressione per risolvere l'ordine all'interno del gruppo di duplicati e così via. L'ordine risultante non deterministico se sono presenti valori duplicati in tutti gli ordini in base alle espressioni.
Condizioni di errore comuni
Esempi
> CREATE TABLE person (id INT, name STRING, age INT);
> INSERT INTO person VALUES
(100, 'John' , 30),
(200, 'Mary' , NULL),
(300, 'Mike' , 80),
(400, 'Jerry', NULL),
(500, 'Dan' , 50);
-- Sort rows by age. By default rows are sorted in ascending manner with NULL FIRST.
> SELECT name, age FROM person ORDER BY age;
Jerry NULL
Mary NULL
John 30
Dan 50
Mike 80
-- Sort rows in ascending manner keeping null values to be last.
> SELECT name, age FROM person ORDER BY age NULLS LAST;
John 30
Dan 50
Mike 80
Mary NULL
Jerry NULL
-- Sort rows by age in descending manner, which defaults to NULL LAST.
> SELECT name, age FROM person ORDER BY age DESC;
Mike 80
Dan 50
John 30
Jerry NULL
Mary NULL
-- Sort rows in ascending manner keeping null values to be first.
> SELECT name, age FROM person ORDER BY age DESC NULLS FIRST;
Jerry NULL
Mary NULL
Mike 80
Dan 50
John 30
-- Sort rows based on more than one column with each column having different
-- sort direction.
> SELECT * FROM person ORDER BY name ASC, age DESC;
500 Dan 50
400 Jerry NULL
100 John 30
200 Mary NULL
300 Mike 80
-- Sort rows based on all columns in the select list
> SELECT * FROM person ORDER BY ALL ASC;
100 John 30
200 Mary NULL
300 Mike 80
400 Jerry NULL
500 Dan 50
-- Positional reference out of range.
> SELECT name FROM person ORDER BY 2;
Error: ORDER_BY_POS_OUT_OF_RANGE
-- Ordering by a type that does not support ordering.
> SELECT map('a', 1) AS m ORDER BY 1;
Error: DATATYPE_MISMATCH