Cláusula ORDER BY

Aplica-se a:Marque Sim Databricks SQL Marque Sim Databricks Runtime

Retorna as linhas de resultados de maneira ordenada na ordem especificada pelo usuário. Ao contrário da cláusula SORT BY , esta cláusula garante uma ordem total na saída.

Sintaxe

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 ]

Parâmetros

  • TODOS

    Aplica-se a:Marque Sim Databricks SQL Marque Sim Databricks Runtime 12.2 LTS e superior

    Uma abreviatura equivalente a especificar todas as expressões na SELECT lista na ordem em que ocorrem. Se sort_direction ou nulls_sort_order forem especificados, aplicam-se a cada expressão.

  • expressão

    Uma expressão de qualquer tipo usada para estabelecer uma ordem na qual os resultados são retornados.

    Se a expressão for um valor INT literal, ela será interpretada como uma posição de coluna na lista de seleção.

  • sort_direction

    Especifica a ordem de classificação para a ordem por expressão.

    • ASC: A direção de classificação para esta expressão é ascendente.
    • DESC: A ordem de classificação para esta expressão é decrescente.

    Se a direção de classificação não for especificada explicitamente, por padrão, as linhas serão classificadas em ordem crescente.

  • nulls_sort_order

    Opcionalmente, especifica se os valores NULL são retornados antes/depois de valores não-NULL. Se null_sort_order não for especificado, NULLs ordenará primeiro se a ordem de classificação for e ASC NULLS ordenará por último se a ordem de classificação for DESC.

    • NULLS FIRST: Os valores NULL são retornados primeiro, independentemente da ordem de classificação.
    • NULLS LAST: Os valores NULL são retornados por último, independentemente da ordem de classificação.

Ao especificar mais de uma expressão, a classificação ocorre da esquerda para a direita. Todas as linhas são classificadas pela primeira expressão. Se houver valores duplicados para a primeira expressão, a segunda expressão será usada para resolver a ordem dentro do grupo de duplicatas e assim por diante. A ordem resultante não é determinística se houver valores duplicados em toda a ordem por expressões.

Exemplos

> 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