← 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 :
- La jointure associe chaque commande livrée à son transporteur : commande 1 (Rapido, quantité 3), commande 3 (Rapido, quantité 5), commande 4 (Expressa, quantité 1).
GROUP BY l.transporteurforme 2 groupes : Rapido (2 livraisons, commandes 1 et 3) et Expressa (1 livraison, commande 4).SUM(c.quantite)par groupe : Rapido = 3 + 5 = 8, Expressa = 1.HAVING COUNT(*) >= 1garde les deux groupes (aucun n'est éliminé ici).ORDER BY quantite_totale DESCplace 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 BYs'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