Предложение ORDER BY
Область применения: Databricks SQL Databricks Runtime
Возвращает строки результатов, отсортированные в указанном пользователем порядке. В отличие от предложения SORT BY, это предложение гарантирует общий порядок выходных данных.
Синтаксис
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 ]
Параметры
ALL
Область применения: Databricks SQL Databricks Runtime 12.2 LTS и выше
Сокращенный эквивалент указания всех выражений в
SELECT
списке в порядке их возникновения. Еслиsort_direction
илиnulls_sort_order
указаны, они применяются к каждому выражению.-
Выражение любого типа, используемое для настройки порядка секций, в котором возвращаются результаты.
Если выражение представляет собой литеральное значение INT, оно интерпретируется как расположение столбца в списке выбора.
sort_direction
Указывает порядок сортировки для выражения ORDER BY.
ASC
: направление сортировки "по возрастанию" для этого выражения.DESC
: направление сортировки "по убыванию" для этого выражения.
Если направление сортировки не указано явно, по умолчанию строки сортируются по возрастанию.
nulls_sort_order
Необязательный параметр, который определяет, возвращаются ли значения NULL перед и после значений, отличных от NULL. Если параметр
null_sort_order
не указан, то значения NULL сортируются в начале, когда порядок сортировки имеет значениеASC
, или в конце, когда для порядка сортировки задано значениеDESC
.NULLS FIRST
означает, что значения NULL возвращаются первыми независимо от порядка сортировки.NULLS LAST
означает, что значения NULL возвращаются последними независимо от порядка сортировки.
Если указано несколько выражений для сортировки, они применяются в порядке слева направо. Все строки сортируются по первому выражению. При наличии повторяющихся значений для первого выражения используется второе выражение, чтобы определить порядок в каждой группе с повторяющимися значениями, и так далее. Результирующий порядок не детерминирован, если дублирующиеся значения сохранятся после применения всех выражений ORDER BY.
Примеры
> 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