PythonClub — Agrégations avancées
GROUP BY, HAVING, sous-requêtes corrélées
Enonce
Base PythonClub — agrégations avancées :
- Pour chaque ville, le nombre d'utilisateurs inscrits
- Nombre de publications par utilisateur (afficher nom, prénom, count)
- Utilisateurs ayant plus de 2 publications
- Le ratio entre publications sans commentaire et total de publications
- Paires d'amis (nom1, prénom1, nom2, prénom2) dont l'amitié a commencé avant 2022
📖 GROUP BY / HAVING / Sous-requêtes
SELECT ville, COUNT(*)
FROM Users
GROUP BY ville
HAVING COUNT(*) > 2
-- Sous-requête scalaire :
WHERE nb_com = (SELECT MAX(nb_com) FROM Posts)
FROM Users
GROUP BY ville
HAVING COUNT(*) > 2
-- Sous-requête scalaire :
WHERE nb_com = (SELECT MAX(nb_com) FROM Posts)
ORDER OF EXECUTION : FROM → JOIN → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT
📖 Rappel de cours
Trois questions autour du regroupement : compter par catégorie, compter les lignes liées à chaque élément, puis ne garder que les groupes dépassant un seuil.
⚠ Le piège : WHERE filtre les lignes avant le regroupement, HAVING filtre les groupes après. Un critère portant sur un COUNT ne peut donc pas aller dans le WHERE.
← Exercices SQL pour la prépa — bases de données en CPGE
Exercices du meme theme
- Jointures et Agrégations
- PythonClub — Requêtes de base
- PythonClub — Jointures
- Candidats en MP
- Notes à Polytechnique
- Moyenne pondérée
La correction commentee, les indices progressifs, l'execution du code dans le navigateur et la verification par l'IA sont reserves aux abonnes.