Compartilhar via


Cláusula ORDER BY

Aplica-se a: marca de seleção positiva SQL do Databricks marca de seleção positiva Databricks Runtime

Retorna as linhas de resultado de maneira classificada na ordem especificada pelo usuário. Ao contrário da cláusula SORT BY, essa 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

  • ALL

    Aplica-se a:verificação marcada como sim SQL do Databricks caixa de seleção marcada sim Databricks Runtime 12.2 LTS e versões posteriores

    Uma abreviação equivalente a especificar todas as expressões na lista SELECT na ordem em que elas ocorrem. Se sort_direction ou nulls_sort_order forem especificados, eles se aplicarão a cada expressão.

  • expression

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

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

  • sort_direction

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

    • ASC: a direção da classificação para essa expressão é crescente.
    • DESC: a ordem de classificação para essa 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 valores NULL são retornados antes/depois de valores não NULL. Se null_sort_order não for especificado, os NULLs serão classificados primeiro se a ordem de classificação for ASC e classificados por último se a ordem de classificação for DESC.

    • NULLS FIRST: os valores NULL serão retornados primeiro, independentemente da ordem de classificação.
    • NULLS LAST: os valores NULL serã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 ordenadas 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 duplicados e assim por diante. A ordem resultante não será determinística se houver valores duplicados em todas as expressões classificar por.

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