Klauzule ORDER BY

Platí pro:zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano Databricks Runtime

Vrátí výsledné řádky seřazeným způsobem v zadaném pořadí uživatele. Na rozdíl od klauzule SORT BY tato klauzule zaručuje celkové pořadí ve výstupu.

Syntaxe

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 ]

Parametry

  • ALL

    Platí pro:zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano Databricks Runtime 12.2 LTS a vyšší

    Zkratka odpovídající zadání všech výrazů v SELECT seznamu v pořadí, v jakém k nim dochází. Pokud sort_direction nebo nulls_sort_order jsou zadány, platí pro každý výraz.

  • Výraz

    Výraz libovolného typu použitého k vytvoření pořadí, ve kterém se vrátí výsledky.

    Pokud výraz obsahuje literálovou hodnotu INT, interpretuje se jako pozice sloupce v seznamu select.

  • sort_direction

    Určuje pořadí řazení pro pořadí podle výrazu.

    • ASC: Směr řazení pro tento výraz je vzestupný.
    • DESC: Pořadí řazení pro tento výraz je sestupné.

    Pokud není explicitně zadán směr řazení, jsou ve výchozím nastavení řádky seřazeny vzestupně.

  • nulls_sort_order

    Volitelně určuje, jestli se hodnoty NULL vrátí před nebo za hodnotami, které nejsou null. Pokud null_sort_order není zadáno, hodnoty NULLs se seřadí jako první, pokud je ASC pořadí řazení a hodnota NULLS seřadí jako poslední, pokud je DESCpořadí řazení .

    • NULLS FIRST: Hodnoty NULL se vrátí jako první bez ohledu na pořadí řazení.
    • NULLS LAST: Hodnoty NULL se vrátí jako poslední bez ohledu na pořadí řazení.

Při zadávání více než jednoho řazení výrazů dochází zleva doprava. Všechny řádky jsou seřazené podle prvního výrazu. Pokud jsou u prvního výrazu duplicitní hodnoty, použije se druhý výraz k překladu pořadí ve skupině duplicit atd. Výsledné pořadí není deterministické, pokud existují duplicitní hodnoty napříč všemi pořadími podle výrazů.

Příklady

> 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