Code SQL copié dans le presse-papiers
RU EN PT

Leçon 2.5 : Trier les résultats

Par défaut, il n'est pas garanti que les lignes d'une table de base de données ou d'un ensemble de résultats de requête soient dans un ordre spécifique. Pour organiser les lignes de sortie dans une séquence significative, nous utilisons la clause ORDER BY.

La clause ORDER BY

La clause ORDER BY est ajoutée à la fin d'une instruction SELECT pour trier l'ensemble de résultats en fonction d'une ou plusieurs colonnes.

Syntaxe

SELECT colonne1, colonne2, ...
FROM nom_table
ORDER BY colonne1 [ASC|DESC], colonne2 [ASC|DESC], ...;
  • colonne1, colonne2, ... : Les colonnes par lesquelles vous souhaitez trier.
  • ASC : Trie les données par ordre croissant (du plus petit au plus grand, de A à Z). C'est le choix par défaut.
  • DESC : Trie les données par ordre décroissant (du plus grand au plus petit, de Z à A).

Tri par une seule colonne

Pour trier par une seule colonne, spécifiez simplement son nom après le mot-clé ORDER BY.

Exemple : Trier les acteurs par nom

Cette requête récupère tous les acteurs et les trie par ordre alphabétique de leur nom (last_name).

SELECT first_name, last_name
FROM actor
ORDER BY last_name;

Si vous souhaitez les trier dans l'ordre alphabétique inverse :

SELECT first_name, last_name
FROM actor
ORDER BY last_name DESC;

Tri par plusieurs colonnes

Vous pouvez trier par plusieurs colonnes en les listant séparées par des virgules. La base de données trie d'abord par la première colonne et, s'il y a des valeurs identiques dans cette colonne, elle trie ces doublons par la deuxième colonne, et ainsi de suite.

Exemple : Trier par nom, puis par prénom

C'est utile lorsque plusieurs acteurs partagent le même nom de famille.

SELECT first_name, last_name
FROM actor
ORDER BY last_name, first_name; -- D'abord par nom, puis par prénom en cas d'égalité

Tri par expressions

Vous pouvez trier non seulement par des colonnes brutes, mais aussi par des expressions. SQL évalue d'abord l'expression pour chaque ligne (par exemple un résultat numérique, textuel ou booléen), puis ORDER BY trie les lignes en utilisant ces valeurs évaluées comme clé de tri.

Exemple 1 : Tri par expression numérique

Trier les films par durée de location en semaines (rental_duration / 7) :

SELECT title, rental_duration
FROM film
ORDER BY rental_duration / 7 DESC;

Exemple 2 : Tri par expression textuelle

Trier les acteurs sans tenir compte de la casse sur le nom complet :

SELECT first_name, last_name
FROM actor
ORDER BY LOWER(first_name || ' ' || last_name);

Exemple 3 : Tri par expression booléenne

Placer d'abord les films classés 'G' :

SELECT title, rating
FROM film
ORDER BY (rating = 'G') DESC, title;

Le tri booléen peut varier selon les dialectes SQL. Pour un comportement entièrement portable, utilisez CASE :

SELECT title, rating
FROM film
ORDER BY CASE WHEN rating = 'G' THEN 0 ELSE 1 END, title;

Tri par alias de colonne ou par position

Dans la plupart des dialectes SQL, vous pouvez également trier par l'alias d'une colonne ou par sa position numérique dans la liste SELECT.

Exemple : Trier par alias

SELECT first_name || ' ' || last_name AS full_name
FROM actor
ORDER BY full_name;

Exemple : Trier par position

-- Trie par la deuxième colonne (last_name)
SELECT first_name, last_name
FROM actor
ORDER BY 2;

Points clés de cette leçon :

  • Utilisez ORDER BY pour trier les lignes de votre ensemble de résultats.
  • ASC (par défaut) trie par ordre croissant ; DESC trie par ordre décroissant.
  • Vous pouvez trier par plusieurs colonnes pour affiner davantage l'ordre.
  • Vous pouvez trier par des expressions qui renvoient des résultats numériques, textuels ou booléens.
  • Le tri peut également être effectué en utilisant des alias de colonnes ou des positions numériques.

Dans la leçon suivante, nous découvrirons les fonctions d'agrégation, qui nous permettent d'effectuer des calculs sur des ensembles de données.