Предложение 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