Clause ORDER BY (Databricks SQL)

Retourne les lignes de résultats de manière triée dans l’ordre spécifié par l’utilisateur. Contrairement au Tri Clause BY , cette clause garantit un classement total dans la sortie.

Syntaxe

ORDER BY { expression [ sort_direction | nulls_sort_oder ] } [, ...]

sort_direction
  [ ASC | DESC ]

nulls_sort_order
  [ NULLS FIRST | NULLS LAST ]

Paramètres

  • expression

    Expression de n’importe quel type utilisé pour é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: Le sens de tri pour cette expression est croissant.
    • DESC: L’ordre de tri de cette expression est décroissant.

    Si le sens de tri n’est pas spécifié explicitement, les lignes par défaut sont triées par ordre croissant.

  • nulls_sort_order

    Spécifie éventuellement si les valeurs NULL sont retournées avant/après les valeurs non NULL. Que null_sort_order n’est pas spécifié, puis les valeurs NULL sont triées en premier si l’ordre de tri est ASC et les valeurs NULL sont triées en dernier si l’ordre de tri est DESC .

    • 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, quel que soit l’ordre de tri.

Lorsque vous spécifiez plusieurs tris d’expressions, de gauche à droite. Toutes les lignes sont triées selon la première expression. S’il existe des valeurs dupliquées 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