Cláusula ORDER BY
Se aplica a: Databricks SQL 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: Databricks SQL 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 especificansort_direction
onulls_sort_order
, se aplican a cada expresión.-
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 esASC
; si el criterio de ordenación esDESC
, 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