• 12 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 15/05/2023

Ordonnez vos données avec ORDER BY

Dans le chapitre précédent, nous avons vu comment faire un filtrage après une agrégation. L'opération que nous allons voir dans ce chapitre est très différente, mais ici elle va nous permettre d'arriver à peu près à la même conclusion.

En effet, au lieu d'utiliser HAVING comme précédemment, nous aurions aussi pu tout simplement trier les lignes selon la colonne nb_societes  : de la plus grande valeur à la plus petite.

Découvrez ORDER BY

Voici comment utiliser ORDER BY :

SELECT * FROM entity ORDER BY lifetime ;

Cette requête renvoie l'ensemble des lignes de la table entity  , et classe les sociétés selon leur colonne lifetime  .

Par défaut, le tri se fait dans l'ordre ascendant, c'est-à-dire du plus petit au plus grand. La requête précédente est donc équivalente à celle-ci :

SELECT * FROM entity ORDER BY incorporation_date ASC ;

Et pour trier dans l'ordre descendant ?

Il suffit de remplacer ASC par DESC :

SELECT * FROM entity ORDER BY incorporation_date DESC ;

Trier sur plusieurs colonnes

Parfois, on peut vouloir trier selon plusieurs colonnes. C'est bien entendu possible ! Il suffit de les séparer par une virgule.

Utilisons le ORDER BY dans le cadre de notre enquête :

Au terme de cette vidéo, voici la requête que vous aurez écrite :

SELECT
    i.id as intermediary_id,
    i.name as intermediary_name,
    e.jurisdiction,
    e.jurisdiction_description,
    count(*) as nb_societes
FROM
    intermediary i,
    assoc_inter_entity a,
    entity e
WHERE
    a.entity = e.id
    AND a.inter = i.id
    AND (i.id = 5000 OR i.id = 5001)
GROUP BY
    i.id, i.name, e.jurisdiction, e.jurisdiction_description
ORDER BY
    nb_societes DESC
LIMIT 
    5

Et voici le résultat de cette requête :

Résultat de la requête
Résultat de la requête

Bon, parmi ces 5 lignes, on n'a pas encore de paradis fiscaux... On va donc continuer nos recherches !

À vous de jouer

Contexte

Afin de réaliser une frise chronologique dans votre article, vous souhaitez avoir un aperçu du début de l'activité des 2 intermédiaires, afin de savoir quand faire débuter votre frise. Vous décidez donc d'afficher la date des premières sociétés créées.

Consignes

Modifiez cette requête pour trier les lignes selon la colonne  incorporation_date   de la table entity   dans l'ordre croissant :

SELECT
    i.id as intermediary_id,
    i.name as intermediary_name,
    e.jurisdiction,
    e.jurisdiction_description,
    e.incorporation_date
FROM
    intermediary i,
    assoc_inter_entity a,
    entity e
WHERE
    a.entity = e.id
    AND a.inter = i.id
    AND (i.id = 5000 OR i.id = 5001)

Vérifiez votre travail

Il suffit d'ajouter la colonne voulue après un ORDER BY :

SELECT
    i.id as intermediary_id,
    i.name as intermediary_name,
    e.jurisdiction,
    e.jurisdiction_description,
    e.incorporation_date
FROM
    intermediary i,
    assoc_inter_entity a,
    entity e
WHERE
    a.entity = e.id
    AND a.inter = i.id
    AND (i.id = 5000 OR i.id = 5001)
ORDER BY
    incorporation_date

En résumé

  • On trie des lignes grâce à ORDER BY.

  • L'ordre de tri peut être défini grâce à ASC et DESC.

  • Pour trier selon plusieurs colonnes, il faut écrire ces colonnes après le ORDER BY, en les séparant par une virgule.

Il faut continuer nos recherches, je sens que nous sommes proches du but ! Dans le chapitre suivant, nous vérifierons si nous n'avons pas oublié des données en chemin…

Exemple de certificat de réussite
Exemple de certificat de réussite