Klauzula ORDER BY
Dotyczy: Databricks SQL Databricks Runtime
Zwraca wiersze wyników w sposób posortowany w określonej kolejności użytkownika. W przeciwieństwie do klauzuli SORT BY klauzula ta gwarantuje łączną kolejność w danych wyjściowych.
Składnia
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
Dotyczy: Databricks SQL Databricks Runtime 12.2 LTS i nowsze
Skrót odpowiadający określeniu wszystkich wyrażeń na
SELECT
liście w kolejności ich wystąpienia. Jeślisort_direction
lubnulls_sort_order
są określone, mają zastosowanie do każdego wyrażenia.-
Wyrażenie dowolnego typu używane do ustanowienia kolejności, w której są zwracane wyniki.
Jeśli wyrażenie ma wartość INT literału, jest interpretowana jako pozycja kolumny na liście wyboru.
sort_direction
Określa kolejność sortowania dla kolejności według wyrażenia.
ASC
: kierunek sortowania dla tego wyrażenia jest rosnąco.DESC
: Kolejność sortowania dla tego wyrażenia jest malejąco.
Jeśli kierunek sortowania nie jest jawnie określony, domyślnie wiersze są sortowane rosnąco.
nulls_sort_order
Opcjonalnie określa, czy wartości NULL są zwracane przed/po wartościach innych niż NULL. Jeśli
null_sort_order
nie określono parametru , najpierw posortuj listy NULLs, jeśli kolejność sortowania toASC
, a sortowanie nulls ostatnie, jeśli kolejność sortowania toDESC
.NULLS FIRST
: wartości NULL są zwracane najpierw niezależnie od kolejności sortowania.NULLS LAST
: wartości NULL są zwracane jako ostatnie niezależnie od kolejności sortowania.
Podczas określania więcej niż jednego sortowania wyrażeń następuje od lewej do prawej. Wszystkie wiersze są sortowane według pierwszego wyrażenia. Jeśli dla pierwszego wyrażenia istnieją zduplikowane wartości, drugie wyrażenie jest używane do rozpoznawania kolejności w grupie duplikatów itd. Wynikowa kolejność nie jest deterministyczna, jeśli istnieją zduplikowane wartości we wszystkich wyrażeniach kolejności.
Przykłady
> 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