Klauzule ORDER BY
Platí pro: Databricks SQL 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: Databricks SQL 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í. Pokudsort_direction
nebonulls_sort_order
jsou zadány, platí pro každý 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 jeASC
pořadí řazení a hodnota NULLS seřadí jako poslední, pokud jeDESC
poř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