Articles

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:

SELECTselect_listFROMtable_nameORDER BYsort_expression1 , ...sort_expressionN ;
Code language: SQL (Structured Query Language) (sql)

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’option DESC pour trier les lignes dans l’ordre décroissant. Si vous omettez l’option ASC ou DESC, la ORDER BY utilise ASC par 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.

tableau des clients

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 :

SELECTfirst_name,last_nameFROMcustomerORDER BYfirst_name ASC;
Code language: SQL (Structured Query Language) (sql)
Exemple de ORDER BY one column de PostgreSQL

Puisque l’option ASC est la valeur par défaut, vous pouvez l’omettre dans la clause ORDER BY comme ceci :

SELECTfirst_name,last_nameFROMcustomerORDER BYfirst_name;
Code language: SQL (Structured Query Language) (sql)

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 :

SELECT first_name, last_nameFROM customerORDER BY last_name DESC;
Code language: SQL (Structured Query Language) (sql)
Exemple de PostgreSQL ORDER BY one column 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 :

SELECTfirst_name,last_nameFROMcustomerORDER BYfirst_name ASC,last_name DESC;
Code language: SQL (Structured Query Language) (sql)
PostgreSQL ORDER BY multiple columns

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 :

SELECT first_name,LENGTH(first_name) lenFROMcustomerORDER BY len DESC;
Code language: SQL (Structured Query Language) (sql)
PostgreSQL ORDER BY expressions

.

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 :

ORDER BY sort_expresssion
Code language: CSS (css)

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.

-- create a new tableCREATE TABLE sort_demo(num INT);-- insert some dataINSERT INTO sort_demo(num)VALUES(1),(2),(3),(null);
Code language: SQL (Structured Query Language) (sql)

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 :

SELECT numFROM sort_demoORDER BY num;
Code language: SQL (Structured Query Language) (sql)

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 :

SELECT numFROM sort_demoORDER BY num NULLS LAST;
Code language: SQL (Structured Query Language) (sql)

Pour placer NULL avant d’autres valeurs non nulles, vous utilisez l’option NULLS FIRST :

SELECT numFROM sort_demoORDER BY num NULLS FIRST;
Code language: SQL (Structured Query Language) (sql)

L’instruction suivante instruction trie les valeurs de la colonne num du tableau sort_demo par ordre décroissant :

SELECT numFROM sort_demoORDER BY num DESC;
Code language: SQL (Structured Query Language) (sql)

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 :

SELECT numFROM sort_demoORDER BY num DESC NULLS LAST;
Code language: SQL (Structured Query Language) (sql)

Summary

  • Utiliser la clause ORDER BY dans l’instruction SELECT pour trier les lignes.
  • Utiliser l’option ASC pour trier les rangs par ordre croissant et l’option DESC pour trier les rangs par ordre décroissant. La clause ORDER BY utilise l’option ASC par défaut.
  • Utiliser les options NULLS FIRST et NULLS LAST pour spécifier explicitement l’ordre de NULL avec d’autres valeurs non nulles.
  • Ce tutoriel a-t-il été utile ?
  • OuiNon

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *