PostgreSQL ORDER BY
Résumé : dans ce tutoriel, vous apprendrez à trier le jeu de résultats renvoyé par l’énoncé SELECT en utilisant la clause ORDER BY de PostgreSQL.
Introduction à la clause ORDER BY de PostgreSQL
Lorsque vous interrogez les données d’une table, l’instruction SELECT renvoie les lignes dans un ordre non spécifié. Pour trier les lignes du jeu de résultats, vous utilisez la clause ORDER BY de l’instruction SELECT.
La clause ORDER BY vous permet de trier les lignes renvoyées par une clause SELECT dans un ordre croissant ou décroissant en fonction d’une expression de tri.
Les éléments suivants illustrent la syntaxe de la clause ORDER BY:
Code language: SQL (Structured Query Language) (sql)SELECTselect_listFROMtable_nameORDER BYsort_expression1 , ...sort_expressionN ;
Dans cette syntaxe :
- D’abord, spécifiez une expression de tri, qui peut être une colonne ou une expression, que vous voulez trier après les mots-clés
ORDER BY. Si vous voulez trier le jeu de résultats en fonction de plusieurs colonnes ou expressions, vous devez placer une virgule (,) entre deux colonnes ou expressions pour les séparer. - Deuxièmement, vous utilisez l’option
ASCpour trier les lignes dans l’ordre croissant et l’optionDESCpour trier les lignes dans l’ordre décroissant. Si vous omettez l’optionASCouDESC, laORDER BYutiliseASCpar défaut.
PostgreSQL évalue les clauses du statut SELECT dans l’ordre suivant : FROMSELECT, et ORDER BY :

En raison de l’ordre d’évaluation, si vous avez un alias de colonne dans la clause SELECT, vous pouvez l’utiliser dans la clause ORDER BY.
Permettons de prendre quelques exemples d’utilisation de la clause PostgreSQL ORDER BY.
Exemples de ORDER BY PostgreSQL
Nous utiliserons la table customer de la base de données exemple pour la démonstration.

1) Utilisation de la clause ORDER BY de PostgreSQL pour trier les rangs par une colonne
La requête suivante utilise la clause ORDER BY pour trier les clients par leur prénom dans l’ordre croissant :
Code language: SQL (Structured Query Language) (sql)SELECTfirst_name,last_nameFROMcustomerORDER BYfirst_name ASC;

Puisque l’option ASC est la valeur par défaut, vous pouvez l’omettre dans la clause ORDER BY comme ceci :
Code language: SQL (Structured Query Language) (sql)SELECTfirst_name,last_nameFROMcustomerORDER BYfirst_name;
2) Utiliser la clause ORDER BY de PostgreSQL pour trier les lignes par une colonne dans l’ordre décroissant
L’instruction suivante sélectionne le prénom et le nom dans la table customer et trie les lignes par les valeurs de la colonne du nom dans l’ordre décroissant :
Code language: SQL (Structured Query Language) (sql)SELECT first_name, last_nameFROM customerORDER BY last_name DESC;

3) Utilisation de la clause ORDER BY de PostgreSQL pour trier des lignes par plusieurs colonnes
L’instruction suivante sélectionne le prénom et le nom de famille dans la table client et trie les lignes par le prénom dans l’ordre croissant et le nom de famille dans l’ordre décroissant :
Code language: SQL (Structured Query Language) (sql)SELECTfirst_name,last_nameFROMcustomerORDER BYfirst_name ASC,last_name DESC;

Dans cet exemple, la clause ORDER BY trie d’abord les lignes par les valeurs de la colonne prénom. Et ensuite, elle trie les lignes triées par les valeurs de la colonne du dernier nom.
Comme vous pouvez le voir clairement dans la sortie, deux clients ayant le même prénom Kelly ont le dernier nom trié par ordre décroissant.
4) Utilisation de la clause ORDER BY de PostgreSQL pour trier les lignes par des expressions
La fonction LENGTH() accepte une chaîne et renvoie la longueur de cette chaîne.
L’instruction suivante sélectionne les prénoms et leurs longueurs. Elle trie les lignes en fonction des longueurs des prénoms :
Code language: SQL (Structured Query Language) (sql)SELECT first_name,LENGTH(first_name) lenFROMcustomerORDER BY len DESC;
Parce que la clause ORDER BY est évaluée après la clause SELECT, l’alias de colonne len est disponible et peut être utilisé dans la clause ORDER BY.
La clause ORDER BY de PostgreSQL et NULL
Dans le monde des bases de données, NULL est un marqueur qui indique les données manquantes ou les données inconnues au moment de l’enregistrement.
Lorsque vous triez des lignes qui contiennent NULL, vous pouvez préciser l’ordre de NULL avec d’autres valeurs non nulles en utilisant l’option NULLS FIRST ou NULLS LAST de la clause ORDER BY :
Code language: CSS (css)ORDER BY sort_expresssion
L’option NULLS FIRST place NULL avant les autres valeurs nonnull et l’option NULL LAST place NULL après d’autres valeurs non nulles.
Créons un tableau pour la démonstration.
Code language: SQL (Structured Query Language) (sql)-- create a new tableCREATE TABLE sort_demo(num INT);-- insert some dataINSERT INTO sort_demo(num)VALUES(1),(2),(3),(null);
Notez que vous n’avez pas besoin de comprendre les instructions CREATE TABLE et INSERT. Il suffit de l’exécuter depuis pgAdmin ou psql pour créer la table sort_demo et y insérer des données.
La requête suivante renvoie les données de la table sort_demo :
Code language: SQL (Structured Query Language) (sql)SELECT numFROM sort_demoORDER BY num;

Dans cet exemple, la clause ORDER BY trie les valeurs de la colonne num de la table sort_demo par ordre croissant. Elle place NULL après les autres valeurs.
Si vous utilisez l’option ASC, la clause ORDER BY utilise l’option NULLS LAST par défaut. Par conséquent, la requête suivante renvoie le même résultat :
Code language: SQL (Structured Query Language) (sql)SELECT numFROM sort_demoORDER BY num NULLS LAST;
Pour placer NULL avant d’autres valeurs non nulles, vous utilisez l’option NULLS FIRST :
Code language: SQL (Structured Query Language) (sql)SELECT numFROM sort_demoORDER BY num NULLS FIRST;

L’instruction suivante instruction trie les valeurs de la colonne num du tableau sort_demo par ordre décroissant :
Code language: SQL (Structured Query Language) (sql)SELECT numFROM sort_demoORDER BY num DESC;

Comme vous pouvez le voir clairement dans la sortie, la clause ORDER BY avec l’option DESC utilise la NULLS FIRST par défaut.
Pour inverser l’ordre, vous pouvez utiliser l’option NULLS LAST :
Code language: SQL (Structured Query Language) (sql)SELECT numFROM sort_demoORDER BY num DESC NULLS LAST;

Summary
- Utiliser la clause
ORDER BYdans l’instructionSELECTpour trier les lignes. - Utiliser l’option
ASCpour trier les rangs par ordre croissant et l’optionDESCpour trier les rangs par ordre décroissant. La clauseORDER BYutilise l’optionASCpar défaut. - Utiliser les options
NULLS FIRSTetNULLS LASTpour spécifier explicitement l’ordre deNULLavec d’autres valeurs non nulles.
- Ce tutoriel a-t-il été utile ?
- OuiNon
.