Cláusula ORDER BY

Se aplica a:casilla marcada como Sí Databricks SQL casilla marcada como Sí Databricks Runtime

Devuelve las filas de resultados de forma ordenada en el orden especificado por el usuario. A diferencia de la cláusula SORT BY, esta cláusula garantiza un orden total en la salida.

Sintaxis

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

    Se aplica a:casilla marcada como sí Databricks SQL casilla marcada como Sí Databricks Runtime 12.2 LTS y versiones posteriores

    Una abreviatura equivalente a especificar todas las expresiones de la lista SELECT en el orden en que se producen. Si se especifican sort_direction o nulls_sort_order, se aplican a cada expresión.

  • expression

    Expresión de cualquier tipo que se usa para establecer un orden en el que se devuelven los resultados.

    Si la expresión es un valor INT literal, se interpreta como una posición de columna en la lista de selección.

  • sort_direction

    Especifica el criterio de ordenación para el orden por expresión.

    • ASC: la dirección de ordenación de esta expresión es ascendente.
    • DESC: el criterio de ordenación de esta expresión es descendente.

    Si no se especifica explícitamente la dirección de ordenación de las filas, el orden es ascendente de manera predeterminada.

  • nulls_sort_order

    También puede especificar si se devuelven valores NULL antes o después de valores distintos de NULL. Si no se especifica null_sort_order, los valores NULL se ordenan primero si el criterio de ordenación es ASC; si el criterio de ordenación es DESC, se ordenan al final.

    • NULLS FIRST: los valores NULL se devuelven primero independientemente del criterio de ordenación.
    • NULLS LAST: los valores NULL se devuelven primero independientemente del criterio de ordenación.

Cuando se especifica más de una expresión, se ordena de izquierda a derecha. Todas las filas se ordenan a partir de la primera expresión. Si hay valores duplicados para la primera expresión, la segunda expresión se usa para resolver el orden dentro del grupo de duplicados, y así sucesivamente. El orden resultante no es determinista si hay valores duplicados en todas las expresiones de orden.

Ejemplos

> 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