Retour à la liste des articles Articles
7 minutes de lecture

Clause SQL ORDER BY avec 7 exemples

Apprenez à connaître la clause SQL ORDER BY ! Nos exemples pratiques et simples vous aideront à comprendre sa syntaxe, ses utilisations courantes et ses meilleures pratiques.

Le langageSQL ou langage de requête structuré vous permet de "parler" à une base de données. Il vous permet de créer, d'extraire et de manipuler les données d'une base de données relationnelle. Ce langage est devenu tellement omniprésent qu'il n'a épargné pratiquement aucun domaine lié aux données.

Si vous vous intéressez à la clause SQL ORDER BY, je suppose que vous avez déjà commencé à apprendre SQL ou que vous envisagez de le faire prochainement. Cette clause est utilisée pour trier les résultats dans un ordre donné. Dans cet article, nous allons aborder quelques exemples pratiques pour démontrer son utilisation. Si vous n'êtes pas déjà familiarisé avec les principes fondamentaux des requêtes SQL, je vous recommande de suivre notre SQL pour les débutants cours.

Plongeons directement dans la clause SQL ORDER BY.

Qu'est-ce que la clause SQL ORDER BY ?

Comme nous l'avons déjà dit, la clause SQL ORDER BY est utilisée pour classer les résultats d'une requête dans un ordre particulier. Supposons que vous soyez un professeur d'université et que vous souhaitiez imprimer une liste des étudiants inscrits à votre cours par ordre alphabétique. Si ces informations sont stockées dans une base de données, une simple requête vous permettra d'obtenir les résultats.

D'après mon expérience, ORDER BY est l'une des constructions SQL les plus utiles ; presque tous les rapports et analyses y ont recours.

Permettez-moi de vous présenter un exemple qui explique comment écrire une requête simple à l'aide de ORDER BY.

Exemple 1 : ORDER BY à l'aide d'une colonne numérique

Imaginez que vous travaillez en tant que responsable des ventes dans une entreprise. La base de données de votre entreprise stocke les données de vente de chaque vendeur dans la table suivante, appelée sales_performance:

sales_person_idnameterritorytotal_sales_valuejoining_date
2333GregorioBavaria1922021-Sep-2021
4323AaronLondon32000010-Jan-2018
1113SebastianLondon3243331-Oct-2020
4134PierreParis2121401-Aug-2020

Imaginons maintenant que vous souhaitiez récupérer cette liste de vendeurs. Vous voulez qu'ils soient listés par leur numéro d'identification dans l'ordre croissant (c'est-à-dire du plus petit au plus grand, de A à Z, etc.). Votre requête ressemblera à quelque chose comme ceci :

SELECT * 
FROM sales_performance
ORDER BY sales_person_id;

Sortie :

sales_person_idnameterritorytotal_sales_valuejoining_date
1113SebastianLondon3243331-Oct-2020
2333GregorioBavaria1922021-Sep-2021
4134PierreParis2121401-Aug-2020
4323AaronLondon32000010-Jan-2018

La requête fonctionne en retournant tous les enregistrements et toutes les colonnes de la table sales_performance puis organise les résultats en fonction de l'ordre numérique de la colonne sales_person_id.

Il est important de noter que ORDER BY trie par défaut dans l'ordre croissant. Vous pouvez utiliser le mot-clé ASC pour indiquer que vous souhaitez obtenir les résultats dans l'ordre croissant, mais vous n'êtes pas obligé de l'inclure. Dans un champ contenant des nombres, l'ordre croissant place le plus petit nombre en premier, suivi du plus petit suivant, et ainsi de suite. Le plus grand nombre vient en dernier.

Exemple 2 : ORDER BY à l'aide d'une colonne de texte

Vous pouvez également utiliser la même clause pour trier les valeurs d'une colonne par ordre alphabétique. Par exemple, supposons que vous souhaitiez obtenir une liste de vendeurs classés par leur prénom. Voici la requête :

SELECT * 
FROM sales_performance
ORDER BY name;

Sortie :

sales_person_idnameterritorytotal_sales_valuejoining_date
4323AaronLondon32000010-Jan-2018
2333GregorioBavaria1922021-Sep-2021
4134PierreParis2121401-Aug-2020
1113SebastianLondon3243331-Oct-2020

Les enregistrements sont maintenant triés par ordre alphabétique selon l'adresse name. Par ordre croissant, cela signifie que les noms sont classés par ordre alphabétique de A à Z.

Exemple 3 : ORDER BY en utilisant une colonne de date

Vous pouvez également trier les résultats par une colonne de date comme joining_date. Dans le cas de la colonne de date, la requête par défaut renvoie les enregistrements de la date la plus ancienne à la plus récente :

SELECT * 
FROM sales_performance
ORDER BY joining_date;

Sortie :

sales_person_idnameterritorytotal_sales_valuejoining_date
4323AaronLondon32000010-Jan-2018
4134PierreParis2121401-Aug-2020
1113SebastianLondon3243331-Oct-2020
2333GregorioBavaria1922021-Sep-2021

Ici, les résultats sont classés par joining_date, de la plus ancienne à la plus récente.

Exemple 4 : Classement par ordre décroissant

Jusqu'à présent, tous les enregistrements ont été triés par ordre croissant. Cependant, vous pouvez classer les enregistrements par ordre décroissant - il suffit d'écrire le mot-clé DESC après le nom de la colonne.

Par exemple, disons que vous voulez classer cette liste par valeur totale des ventes réalisées par chaque vendeur. Vous voulez voir le plus grand nombre (c'est-à-dire les ventes les plus élevées) en premier, vous devrez donc trier par ordre décroissant. Essayons la requête suivante :

SELECT * 
FROM sales_performance
ORDER BY total_sales_value DESC;

Sortie :

sales_person_idnameterritorytotal_sales_valuejoining_date
4323AaronLondon32000010-Jan-2018
1113SebastianLondon3243331-Oct-2020
4134PierreParis2121401-Aug-2020
2333GregorioBavaria1922021-Sep-2021

Les résultats sont triés par ordre décroissant (10-1) en fonction de la valeur totale des ventes. Vous pouvez également effectuer cette opération avec des valeurs de texte ou de date ; dans ce cas, les résultats seront classés de Z à A (texte) ou du plus récent au plus ancien (date).

Les mots-clés DESC ou ASC peuvent être utilisés si nécessaire. Si vous omettez le mot-clé, les résultats seront classés par ordre croissant.

Exemple 5 : ORDER BY en utilisant un numéro de colonne

Vous pouvez également référencer une colonne en utilisant une référence numérique basée sur l'ordre des colonnes dans le tableau. En d'autres termes, vous utilisez un numéro à la place du nom de la colonne. Jetez un coup d'œil à l'exemple suivant pour plus de clarté :

SELECT sales_person_id, name 
FROM sales_performance
ORDER BY 2;

Sortie :

sales_person_idname
4323Aaron
2333Gregorio
4134Pierre
1113Sebastian

Le nom de la colonne est la deuxième colonne de notre tableau. Nous voulons ordonner les valeurs renvoyées par la requête en fonction du nom du commercial, mais au lieu d'écrire nom après ORDER BY, nous avons écrit 2.

Remarque : cette approche est uniquement recommandée pour les requêtes interactives. Elle n'est pas recommandée pour l'écriture de scripts, car les requêtes comportant des chiffres dans ORDER BY sont difficiles à gérer.

Exemple 6 : Tri de plusieurs colonnes

Lorsque vous écrivez des requêtes réelles, vos exigences sont rarement aussi simples que les exemples que nous avons utilisés ; vous pouvez avoir à trier vos valeurs sur la base de plusieurs colonnes.

La clause ORDER BY vous permet de le faire en spécifiant une liste de colonnes ; il suffit de séparer les noms des colonnes par des virgules. Vous pouvez utiliser les mots-clés ASC ou DESC (si vous le souhaitez) avec chaque colonne pour trier cette colonne dans l'ordre croissant ou décroissant.

Disons que vous devez afficher les enregistrements de la table dans l'ordre décroissant de territory, puis par nom de vendeur. Votre requête ressemblera à quelque chose comme ceci.

SELECT * 
FROM sales_performance
ORDER BY territory DESC, name ASC;

Résultat :

sales_person_idnameterritorytotal_sales_valuejoining_date
4134PierreParis2121401-Aug-2020
4323AaronLondon32000010-Jan-2018
1113SebastianLondon3243331-Oct-2020
2333GregorioBavaria1922021-Sep-2021

Vous remarquerez dans le résultat que la colonne territory est classée par ordre alphabétique inverse (c'est-à-dire par ordre décroissant). Pour le territoire de Londres, les enregistrements sont présentés dans l'ordre alphabétique du nom.

Exemple 7 : Utilisation de ORDER BY avec des expressions

Vous pouvez également trier en fonction d'autres critères que le nom des colonnes ; SQL vous permet d'utiliser des expressions pour trier des valeurs. Par exemple, disons que vous voulez trier en concaténant territory et name dans l'ordre croissant. Voici la requête :

SELECT *
FROM sales_performance
ORDER BY CONCAT(territory, name);

Sortie :

sales_person_idnameterritorytotal_sales_valuejoining_date
2333GregorioBavaria1922021-Sep-2021
4323AaronLondon32000010-Jan-2018
1113SebastianLondon3243331-Oct-2020
4134PierreParis2121401-Aug-2020

Ici les enregistrements sont ordonnés par une concaténation de territory et name. Ainsi Bavaria et Gregorio deviennent les premiers dans l'ordre alphabétique et Paris Pierre est le dernier.

Vous pouvez utiliser CASE dans ORDER BY pour produire des classements vraiment précis.

Vous voulez vous entraîner à utiliser ORDER BY en SQL ?

J'espère que ces exemples ont clairement démontré l'utilisation de la clause ORDER BY. Le tri des données est un besoin essentiel dans la plupart des vues et des rapports, d'où l'importance de maîtriser l'utilisation de ORDER BY. Et la clé pour devenir bon dans la rédaction de requêtes est la pratique !

Plus vous écrirez de requêtes pour différents cas d'utilisation, plus l'écriture de requêtes deviendra intuitive. Si vous êtes à la recherche d'exercices pratiques SQL, jetez un coup d'œil à notre site Web interactif. Exercices Pratiques de SQL. Il propose 88 exercices interactifs allant du plus simple au plus avancé.

Et si vous recherchez une expérience d'apprentissage complète, notre parcours Le SQL de A à Z est fait pour vous. Elle propose 7 cours interactifs et vous mettra sur la voie de compétences SQL de niveau professionnel. Vous pouvez également consulter cet article sur les différentes manières d'apprendre SQL.

Bonne chance et bon apprentissage !