Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 posterioresUna abreviatura equivalente a especificar todas las expresiones de la lista
SELECTen el orden en que se producen. Si se especificansort_directiononulls_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 literal
INTEGER, se interpreta como una posición de columna en la lista de selección.Si un valor de
INTEGERliteral hace referencia a una posición que está fuera del intervalo, Azure Databricks genera ORDER_BY_POS_OUT_OF_RANGE. 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.
-
Si la expresión tiene un tipo de datos que no admite la ordenación, como MAP, Azure Databricks genera DATATYPE_MISMATCH. INVALID_ORDERING_TYPE.
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.
Condiciones de error comunes
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
-- Positional reference out of range.
> SELECT name FROM person ORDER BY 2;
Error: ORDER_BY_POS_OUT_OF_RANGE
-- Ordering by a type that does not support ordering.
> SELECT map('a', 1) AS m ORDER BY 1;
Error: DATATYPE_MISMATCH