Clause ORDER BY
S’applique à : Databricks SQL Databricks Runtime
Renvoie les lignes de résultats triées dans l’ordre spécifié par l’utilisateur. Contrairement à la clause SORT BY, cette clause garantit un classement total dans la sortie.
Syntaxe
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 ]
Paramètres
ALL
S’applique à : Databricks SQL Databricks Runtime 12.2 LTS et versions ultérieures
Raccourci permettant de spécifier toutes les expressions de la liste
SELECT
dans l’ordre dans lequel elles se produisent. Sisort_direction
ounulls_sort_order
est spécifié, il s’applique à chaque expression.-
Expression de n’importe quel type permettant d’établir un ordre dans lequel les résultats sont retournés.
Si l’expression est une valeur de type INT littérale, elle est interprétée comme une position de colonne dans la liste de sélection.
sort_direction
Spécifie l’ordre de tri pour l’expression Order By.
ASC
: la direction de tri est croissant pour cette expression.DESC
: l’ordre de tri est croissant pour cette expression.
Si l’ordre de tri n’est pas spécifié explicitement, les lignes par défaut sont triées par ordre croissant.
nulls_sort_order
Spécifie si les valeurs NULL sont renvoyées avant/après les valeurs non NULL. Si
null_sort_order
n’est pas spécifié, les valeurs NULL sont triées en premier si l’ordre de tri estASC
et les valeurs NULL sont triées en dernier si l’ordre de tri estDESC
.NULLS FIRST
: les valeurs NULL sont retournées en premier indépendamment de l’ordre de tri.NULLS LAST
: les valeurs NULL sont retournées en dernier indépendamment de l’ordre de tri.
Lorsque vous spécifiez plusieurs expressions, le tri s’effectue de gauche à droite. Toutes les lignes sont triées selon la première expression. S’il existe des valeurs en double pour la première expression, la deuxième expression est utilisée pour résoudre l’ordre dans le groupe de doublons et ainsi de suite. L’ordre qui en résulte n’est pas déterministe s’il existe des valeurs en double dans toutes les expressions order by.
Exemples
> 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