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