Exercices SQL pour la prépa — bases de données en CPGE
Requêtes de base, jointures, agrégations, sous-requêtes : les exercices de bases de données du programme d'informatique commune.
Une partie du programme que presque personne ne travaille
Les bases de données représentent une part régulière de l'épreuve d'informatique commune, et c'est la partie la plus rentable du programme : le périmètre est étroit, les questions sont stéréotypées, et beaucoup de candidats l'abordent sans l'avoir jamais pratiquée. Quelques heures bien employées y rapportent plus que le même temps passé sur l'algorithmique.
Ce qui tombe
Le modèle relationnel — relations, attributs, clés primaires et étrangères —, puis l'écriture de requêtes : SELECT, WHERE, ORDER BY, jointures, GROUP BY avec HAVING, sous-requêtes, et l'algèbre relationnelle qui les sous-tend. Les fonctions de fenêtrage et les CTE dépassent le programme mais éclairent ce qui précède.
Les trois pièges classiques
- Confondre
WHEREetHAVING.WHEREfiltre les lignes avant regroupement,HAVINGfiltre les groupes après. Une condition portant sur unCOUNTne peut pas vivre dans unWHERE. - Oublier les lignes sans correspondance. « Combien de publications par utilisateur, y compris ceux qui n'ont rien publié » impose un
LEFT JOIN: une jointure interne fait disparaître silencieusement les zéros. - Compter la mauvaise chose.
COUNT(*)compte les lignes,COUNT(colonne)ignore lesNULL,COUNT(DISTINCT colonne)compte les valeurs différentes. Trois résultats pour trois questions différentes.
Pourquoi il n'y a pas de résultat affiché ici
Contrairement aux exercices Python, les énoncés SQL ne montrent pas le résultat attendu : sur une requête, montrer le résultat revient à donner la réponse. Les bases de démonstration s'exécutent en revanche directement dans le navigateur, sans rien installer.
Les exercices
SQL — bases completes 16 exercices
- Jointures et Agrégations INNER JOIN, GROUP BY, HAVING
- PythonClub — Requêtes de base SELECT, WHERE, COUNT, ORDER BY, LIMIT
- PythonClub — Jointures JOIN, DISTINCT, sous-requêtes
- PythonClub — Agrégations avancées GROUP BY, HAVING, sous-requêtes corrélées
- Candidats en MP ConcoursDB
- Notes à Polytechnique ConcoursDB
- Moyenne pondérée ConcoursDB
- Notes de maths en khôlle KhôlleBoard
- Moyenne par élève KhôlleBoard
- Colleur le plus sévère KhôlleBoard
- Candidats admis VoeuxSup
- Écoles d'admission VoeuxSup
- Taux d'admission par école VoeuxSup
- Copies de maths DSManager
- Moyenne par matière DSManager
- Classement général DSManager
SQL Express — une requete par jour 75 exercices
- Compter les élèves PrepaSup
- Élèves de MP PrepaSup
- 5 premiers inscrits au concours PrepaSup
- Notes d'un élève PrepaSup
- Inscrits après le 1er janvier 2024 PrepaSup
- Nombre d'élèves par filière PrepaSup
- Binômes de colle de l'élève 7 PrepaSup
- Colles de 2024 PrepaSup
- Auteur de l'évaluation 13 PrepaSup
- Notes au-dessus de la moyenne PrepaSup
- La meilleure note PrepaSup
- Auteurs des 10 appréciations récentes PrepaSup
- Binômes de colle de l'élève 10 PrepaSup
- Nombre de notes par élève PrepaSup
- Élèves avec plus de 2 évaluations PrepaSup
- Paires de binômes de colle avant 2022 PrepaSup
- Moyenne des appréciations par évaluation PrepaSup
- Top 3 élèves par total de notes PrepaSup
- Évaluations les plus appréciées (table Classes) PrepaSup
- Élèves sans aucune évaluation PrepaSup
- Élèves actifs en 2024 (≥3 appréciations) PrepaSup
- Ratio de notes insuffisantes PrepaSup
- Nombre d'évaluations diversifiées par commentateur PrepaSup
- Filières avec plus de 2 élèves PrepaSup
- Élèves ayant apprécié leurs propres évaluations PrepaSup
- Évaluations triées par note décroissante PrepaSup
- Prénoms commençant par une lettre donnée PrepaSup
- Nombre total d'appréciations PrepaSup
- Élèves inscrits entre deux dates PrepaSup
- Dernière évaluation en date PrepaSup
- UNION : élèves de PC ou auteurs prolifiques PrepaSup
- Moyenne d'appréciations par élève (via Notes) PrepaSup
- Dernière appréciation de chaque évaluation PrepaSup
- Élèves n'ayant jamais apprécié PrepaSup
- Classement des filières par évaluations PrepaSup
- Paires d'élèves de la même filière PrepaSup
- Catégoriser les notes avec CASE WHEN PrepaSup
- Jours entre inscription et première évaluation PrepaSup
- Évaluations contenant un mot-clé PrepaSup
- Nombre de binômes de colle par élève (y compris 0) PrepaSup
- Binômes en commun entre deux élèves PrepaSup
- Division relationnelle : a apprécié toutes les évaluations d'un auteur PrepaSup
- Binômes de colle des binômes (pas déjà en binôme direct) PrepaSup
- Ratio appréciations reçues / appréciations écrites PrepaSup
- Mois avec le plus d'évaluations PrepaSup
- Élèves actifs en 2024 (évalué ET apprécié) PrepaSup
- Évaluations sans aucune appréciation (LEFT JOIN) PrepaSup
- Top 3 des élèves les plus connectés PrepaSup
- Moyenne glissante des 3 notes précédentes PrepaSup
- Vue statistiques élève PrepaSup
- Longueur des noms de matière PrepaSup
- Prénoms en majuscules PrepaSup
- Année d'inscription de chaque élève PrepaSup
- Appréciations contenant un point d'exclamation PrepaSup
- Nombre d'évaluations par année PrepaSup
- Trois premiers caractères du prénom PrepaSup
- Matières commençant par une lettre donnée PrepaSup
- Nom de matière le plus long par élève PrepaSup
- Rang des évaluations par note PrepaSup
- Numéro d'évaluation par élève (ROW_NUMBER) PrepaSup
- Appréciation précédente avec LAG PrepaSup
- Élèves inscrits mais sans binôme (anti-jointure) PrepaSup
- Remplacement dans la matière PrepaSup
- Jours écoulés depuis chaque évaluation PrepaSup
- Élèves ayant évalué le même mois que leur inscription PrepaSup
- EXCEPT : élèves ayant évalué mais jamais apprécié PrepaSup
- Total cumulé d'appréciations (running total) PrepaSup
- Cross join : toutes les combinaisons élève-filière PrepaSup
- Agrégation conditionnelle avec CASE WHEN PrepaSup
- CTE : statistiques intermédiaires par élève PrepaSup
- DENSE_RANK des filières par nombre d'élèves PrepaSup
- HAVING avec sous-requête : filières au-dessus de la moyenne PrepaSup
- CTE récursive : chaîne de colles depuis l'élève 1 PrepaSup
- INSERT ... SELECT : archiver les anciennes évaluations PrepaSup
- UPDATE avec sous-requête : compter les appréciations PrepaSup
Autres rubriques
- Exercices Python pour la prépa — CPGE scientifique et ECG
- Exercices d'algorithmique en Python — tris, dichotomie, récursivité
- Exercices d'analyse numérique en Python — dichotomie, Newton, intégration
- Exercices sur les graphes en Python — BFS, DFS, Dijkstra
- Exercices Python pour la prépa ECG — probabilités, matrices, suites
- Exercices d'IA et d'apprentissage automatique en Python — CPGE
La correction commentee, les indices progressifs, l'execution du code dans le navigateur et la verification par l'IA sont reserves aux abonnes.