CodeGym /Cours /SQL SELF /Tri des données (ORDER BY) : tri croissant et décroi...

Tri des données (ORDER BY) : tri croissant et décroissant (ASC, DESC)

SQL SELF
Niveau 2 , Leçon 3
Disponible

Quand tu bosses avec des bases de données, t’as souvent besoin de voir les données dans un certain ordre. Par exemple :

  • « Montre-moi le top 10 des produits les plus chers. »
  • « Quelles commandes ont été passées en dernier ? »
  • « Quel est l’âge des élèves, du plus jeune au plus vieux ? »

Vouloir organiser les données, c’est normal : même si t’es un dev super balèze, fouiller dans un tas de lignes en vrac, c’est pas le kif. C’est pour ça que SQL nous file un outil pour trier les lignes dans le résultat — l’opérateur ORDER BY.

Bases du tri avec ORDER BY

ORDER BY, c’est un peu la baguette magique qui te permet de mettre de l’ordre dans les lignes du résultat. Sans lui, les données reviennent dans un ordre « aléatoire » (c’est pas un bug de la base, c’est juste que l’ordre n’est pas garanti).

Voilà à quoi ressemble la syntaxe de ORDER BY :

SELECT colonne1, colonne2
FROM table
ORDER BY colonne1 DESC;
  • colonne1 : le nom de la colonne sur laquelle tu veux trier.
  • ASC : tri croissant (c’est la valeur par défaut, donc tu peux la zapper).
  • DESC : tri décroissant.

Exemple

Imaginons qu’on a une table students :

id name age
1 Alex 22
2 Maria 19
3 Otto 21

On va trier les étudiants par âge (ordre croissant) :

SELECT name, age
FROM students
ORDER BY age ASC;

Résultat :

name age
Maria 19
Otto 21
Alex 22

Si tu changes la direction du tri pour décroissant :

SELECT name, age
FROM students
ORDER BY age DESC;

Le résultat sera :

name age
Alex 22
Otto 21
Maria 19

Tri sur plusieurs colonnes

Parfois, une seule colonne ne suffit pas pour trier. Imagine qu’il y a plusieurs étudiants du même âge, et tu veux ajouter un tri supplémentaire, genre par nom.

Tri sur plusieurs colonnes :

SELECT colonne1, colonne2
FROM table
ORDER BY colonne1 DESC, colonne2 ASC;

Exemple pour la table suivante :

id name age
1 Alex 22
2 Maria 19
3 Otto 21
4 Anna 19

Requête :

SELECT name, age
FROM students
ORDER BY age ASC, name ASC;

Résultat :

name age
Anna 19
Maria 19
Otto 21
Alex 22

Ici, d’abord on trie par âge (croissant), puis à l’intérieur de chaque âge, par nom dans l’ordre alphabétique.

Tri avec des alias

Si tu utilises des alias pour les colonnes, tu peux aussi trier par ces alias.

SELECT name AS "Nom", age AS "Âge"
FROM students
ORDER BY "Âge" DESC;

Résultat :

Nom Âge
Alex 22
Otto 21
Maria 19

Pourquoi c’est important ? Parce qu’avant, c’était pas possible, et c’était galère de trier sur des colonnes calculées.

Tri avec des colonnes calculées

SQL te permet de faire des calculs direct dans la requête, puis de trier sur le résultat de ces calculs.

Exemple 1. Calcul tout simple

SELECT name, age, age * 2 AS age_doublé
FROM students
ORDER BY age_doublé DESC;

Résultat :

name age age_doublé
Alex 22 44
Otto 21 42
Maria 19 38

Exemple 2. Utilisation de fonctions. Imaginons qu’on stocke les prix des produits dans la table products :

product_name price
Produit A 100
Produit B 200
Produit C 150

Et maintenant, on trie par le prix arrondi, multiplié par 0.9 (genre avec une remise). La fonction ROUND renvoie le nombre arrondi au chiffre après la virgule que tu veux.

SELECT product_name, price, ROUND(price * 0.9, 1) AS prix_remisé
FROM products
ORDER BY prix_remisé ASC;

Voilà le résultat :

product_name price prix_remisé
Produit A 100 90
Produit C 150 135
Produit B 200 180

Utilisation pratique du tri

Le tri joue un rôle clé dans ces cas :

  • Faire des rapports, genre le top 10 des meilleures ventes du mois.
  • Afficher des données dans les interfaces utilisateurs, par exemple une liste de commandes triée par date.
  • Générer des listes pour l’analytics, genre mettre en avant des groupes par priorité.

Erreurs fréquentes avec ORDER BY

Les pièges sont partout. Voilà quelques trucs à surveiller :

  • Si tu essaies de trier sur une colonne qui existe pas, tu vas avoir une erreur : colonne "not_a_column" n’existe pas.
  • Le tri sur un alias utilisé dans une colonne calculée peut être chelou si l’alias est défini à un niveau supérieur.
  • Si tu oublies de préciser la direction du tri, PostgreSQL va mettre ASC par défaut. C’est pas une erreur, mais ça peut donner des résultats inattendus.

Maintenant tu sais comment gérer le tri dans PostgreSQL avec ORDER BY. Retiens que des données bien organisées, c’est déjà la moitié du taf pour faire des requêtes SQL efficaces. Allez, on passe à la suite ! 😉

1
Étude/Quiz
Introduction à SQL, niveau 2, leçon 3
Indisponible
Introduction à SQL
Introduction à SQL
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION