Adloun

Corrigé CCINP 2026 Maths 1 MP — Exercice I (Q1 à Q4) : Requêtes SQL sur une base d'élèves et de paiements

Sujet officiel du concours CCINP, session 2026, épreuve Maths 1 MP. Corrigé rédigé par Ibrahim Alame.

Sujet officiel (PDF, site du concours)

Énoncé

Deux tables : ELEVES(id, nom, prenom, email, promo), de clé primaire id, où promo est l'année d'admission (entier) ; PAIEMENTS(id, id_eleve, montant, date_paiement), de clé primaire id, où id_eleve fait référence à ELEVES.id et montant est un entier (en euros).

Q1. Afficher, sans doublon, les emails des élèves qui ne sont pas de la promotion 2025.
Q2. Afficher nom, prénom et montant total payé de chaque élève, trié par nom puis prénom.
Q3. Afficher les id et emails des élèves dont la ligne existe au moins en deux exemplaires dans ELEVES (à l'attribut id près).
Q4. Afficher l'id des élèves n'ayant effectué aucun paiement.

Corrigé

Q1. Il s'agit d'une sélection (WHERE) suivie d'une projection sur l'attribut email, avec élimination des doublons :


SELECT DISTINCT email
FROM ELEVES
WHERE promo <> 2025;

Le WHERE ne garde que les lignes dont l'année d'admission diffère de ; la projection sur email peut produire plusieurs fois la même valeur (un même email saisi sur deux lignes, ce que la question Q3 envisage justement), d'où le SELECT DISTINCT, qui élimine les lignes identiques du résultat. Ce que le correcteur attend : le mot-clé DISTINCT ; sans lui, la requête ne répond pas à « sans doublons ».

Q2. Le nom et le prénom sont dans ELEVES, les montants dans PAIEMENTS : on fait une jointure selon la clé étrangère PAIEMENTS.id_eleve = ELEVES.id, puis une agrégation SUM par élève.


SELECT e.nom, e.prenom, SUM(p.montant) AS total
FROM ELEVES AS e
JOIN PAIEMENTS AS p ON p.id_eleve = e.id
GROUP BY e.id, e.nom, e.prenom
ORDER BY e.nom, e.prenom;

La jointure produit une ligne par paiement, accompagnée des informations de l'élève qui l'a effectué. Le GROUP BY forme un groupe par élève ; on groupe par e.id, la clé, et non par le seul couple (nom, prenom) : deux homonymes distincts forment ainsi deux groupes, comme il se doit. Les attributs nom et prenom figurent aussi dans le GROUP BY pour avoir le droit d'être projetés à côté de l'agrégat. SUM(p.montant) calcule le total de chaque groupe, et ORDER BY e.nom, e.prenom trie selon le nom, puis, à nom égal, selon le prénom.

100 % gratuit

La suite du corrigé est sur Adloun

Le corrigé rédigé en entier, question par question, et le tuteur pour poser des questions sur ce sujet.

Voir le corrigé complet, gratuitement

Inscription gratuite en 30 secondes (e-mail, nom d'utilisateur, mot de passe, classe ou profil), sans carte bancaire : arrivée directe sur le corrigé.

Toutes les parties de l'épreuve

Corrigé complet gratuit →