PaliSkill
SQL Intermédiaire

Leçon 9 / 9 — Chapitre 2: Jointures avancées et combinées

Cas pratique : classement par jointures combinées

Ce cas pratique combine jointure, agrégation, HAVING et tri — les notions de ce chapitre.

SELECT l.transporteur, COUNT(*) AS nb_livraisons, SUM(c.quantite) AS quantite_totale
FROM commandes c
JOIN livraisons l ON c.id = l.id
GROUP BY l.transporteur
HAVING COUNT(*) >= 1
ORDER BY quantite_totale DESC;

Étape par étape :

  1. La jointure associe chaque commande livrée à son transporteur : commande 1 (Rapido, quantité 3), commande 3 (Rapido, quantité 5), commande 4 (Expressa, quantité 1).
  2. GROUP BY l.transporteur forme 2 groupes : Rapido (2 livraisons, commandes 1 et 3) et Expressa (1 livraison, commande 4).
  3. SUM(c.quantite) par groupe : Rapido = 3 + 5 = 8, Expressa = 1.
  4. HAVING COUNT(*) >= 1 garde les deux groupes (aucun n'est éliminé ici).
  5. ORDER BY quantite_totale DESC place Rapido (8) avant Expressa (1).

Résultat final : 2 lignes, dans cet ordre — Rapido (nb_livraisons=2, quantite_totale=8), puis Expressa (nb_livraisons=1, quantite_totale=1).

À retenir :

  • Une requête peut combiner jointure, agrégation, filtrage de groupes et tri dans une seule instruction, chacune s'appliquant au résultat de la précédente.
  • ORDER BY s'applique toujours en tout dernier, sur le résultat déjà groupé et filtré.

À vous de jouer : recalculez ce classement avec ORDER BY nb_livraisons DESC à la place de quantite_totale DESC, et vérifiez si l'ordre change.

🔒

Continuez ce module

Débloquez les leçons restantes ainsi que la certification finale.

2 500 XOF / 3,81 € / 4,15 $

Débloquez les 80 leçons restantes de ce module

Votre paiement est vérifié avant l'activation de l'accès