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
ASC
pour trier les lignes dans l’ordre croissant et l’optionDESC
pour trier les lignes dans l’ordre décroissant. Si vous omettez l’optionASC
ouDESC
, laORDER BY
utiliseASC
par défaut.
PostgreSQL évalue les clauses du statut SELECT
dans l’ordre suivant : FROM
SELECT
, 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;