Clausola ORDER BY

Si applica a:segno di spunta sì Databricks SQL segno di spunta sì 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:segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime 12.2 LTS e versioni successive

    Espressione abbreviata equivalente a specificare tutte le espressioni nell'elenco nell'ordine SELECT in cui si verificano. Se sort_direction o nulls_sort_order vengono specificati, si applicano a ogni espressione.

  • expression

    Espressione di qualsiasi tipo utilizzata per stabilire un ordine in cui vengono restituiti i risultati.

    Se l'espressione un valore INT letterale viene interpretato come una posizione di colonna nell'elenco di selezione.

  • 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_order non viene specificato, gli NUL ordinano prima se l'ordinamento è ASC e NULLS ordinano per ultimo se l'ordinamento è DESC.

    • NULLS FIRST: i valori NULL vengono restituiti per primi indipendentemente dall'ordinamento.
    • NULLS LAST: i valori NULL vengono restituiti per ultimo indipendentemente dall'ordinamento.

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.

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