DEA
Voici le DEA de la base de données des exemples.

Téléchargez la base de données Cours7_EtudiantProgramme.sqlite sur LÉA.
Requêtes
- Quelle est la moyenne de chaque étudiant ? Affichez le nom et sa moyenne globale.
SELECT e.Nom, AVG(n.Note) AS MoyenneNoteFROM Etudiants eINNER JOIN Etudiants_Cours n ON e.DA = n.EtudiantsDAGROUP BY e.nom;
- Quelle est la moyenne pour le cours
420BD1? Affichez le nom du cours et la moyenne.
SELECT c.Nom, Avg(n.Note) AS MoyenneNoteFROM Cours cINNER JOIN Etudiants_Cours n ON c.Id = n.CoursIdWHERE c.Id = '420BD1'GROUP BY c.Nom;
- Quelle est la moyenne pour tous les cours ? Affichez le nom du cours et la moyenne. Si un cours n'a pas d'étudiants, il ne doit pas être listé.
SELECT c.Nom, Avg(n.Note) AS MoyenneNoteFROM Cours cINNER JOIN Etudiants_Cours n ON c.Id = n.CoursIdGROUP BY c.Nom;
- Quelle est la moyenne pour tous les cours ? Affichez le nom du cours et la moyenne. Si un cours n'a pas d'étudiants, il doit être listé.
SELECT c.Nom, Avg(n.Note) AS MoyenneNoteFROM Cours cLEFT OUTER JOIN Etudiants_Cours n ON c.Id = n.CoursIdGROUP BY c.Nom;
- Combien d'étudiants y a-t-il par cours ? Affichez le nom du cours et le nombre d'étudiants. Un cours sans étudiants doit afficher 0.
SELECT c.Nom, Count(DISTINCT n.EtudiantsDa) AS NbEtudiantFROM Cours cLEFT OUTER JOIN Etudiants_Cours n ON c.Id = n.CoursIdGROUP BY c.Nom;
- Quels sont les étudiants n'ayant pas reçu leur note dans un cours ? Affichez le nom de l'étudiant et le nom du cours. Je dois pouvoir différencier le nom de l'étudiant du nom du cours. Les étudiants inscrits à aucun cours n'ont pas besoin d'être listés.
SELECT e.Nom AS Etudiant, c.Nom AS CoursFROM Etudiants eINNER JOIN Etudiants_Cours ec ON e.DA = ec.EtudiantsDaINNER JOIN Cours c ON ec.CoursId = c.IdWHERE ec.Note IS NULL;
- Quelle est la moyenne de chaque étudiant par programme ? Affichez le nom du programme, le nom de l'étudiant et sa moyenne. Les programmes sans étudiants doivent être affichés.
SELECT p.Nom AS Programme, e.Nom AS Etudiant, Avg(n.Note) AS MoyenneNoteFROM Programmes pLEFT OUTER JOIN Etudiants e ON p.Id = e.ProgrammesIdLEFT OUTER JOIN Etudiants_Cours n ON e.DA = n.EtudiantsDaGROUP BY p.Nom, e.Nom;
- Quels sont les programmes ayant des étudiants ? Listez seulement le nom du programme, sans répétition.
SELECT DISTINCT p.NomFROM Programmes pLEFT OUTER JOIN Etudiants e ON p.Id = e.ProgrammesIdWHERE e.ProgrammesId IS NOT NULL;
ou
SELECT DISTINCT p.NomFROM Programmes pINNER JOIN Etudiants e ON p.Id = e.ProgrammesId;
- Quels sont les étudiants ayant une moyenne globale supérieure à 75 ? Affichez le nom de l'étudiant et sa moyenne.
SELECT e.Nom, Avg(n.Note) AS MoyenneNoteFROM Etudiants eINNER JOIN Etudiants_Cours n ON e.DA = n.EtudiantsDAGROUP BY e.nomHAVING Avg(n.Note) > 75;
- Quel est l'étudiant avec la plus haute moyenne ? Affichez le nom et sa moyenne.
SELECT e.Nom, Avg(n.Note) AS MoyenneNoteFROM Etudiants eLEFT OUTER JOIN Etudiants_Cours n ON e.DA = n.EtudiantsDAGROUP BY e.NomORDER BY Avg(n.note) DESCLIMIT 1;
- Combien d'étudiants y a-t-il par programme ? Un programme sans étudiants doit afficher 0. Affichez les programmes par ordre décroissant du nombre d'étudiants.
SELECT p.Nom, Count(e.Nom) AS NbEtudiantFROM Programmes p LEFT OUTER JOIN Etudiants e ON p.Id = e.ProgrammesIdGROUP BY p.NomORDER BY Count(e.Nom) DESC;
- Quels sont les programmes ayant plus de 3 étudiants ? Afficher le programme et le nombre d'étudiants.
SELECT p.Nom, Count(e.Nom) AS NbEtudiantFROM Programmes pINNER JOIN Etudiants e ON p.Id = e.ProgrammesIdGROUP BY p.NomHAVING Count(e.Nom) > 3;
N'hésitez pas si vous voulez plus d'exemple.
Version originale par François St-Hilaire
Produit à partir des notes de Benoit Desrosiers
Mise à jour 2023 par Pierre-Luc Boulanger