Bienvenue

Dans cette section, vous trouverez des ressources sur les cours que j'enseigne à savoir de la documentation, du code, des vidéos etc. Dès que je trouve quelque chose d'intéressant à partager, je le mettrai à disposition ici pour mes étudiants.


Série d'exercices sur les requêtes sélection multitables avec jointure

Travaux dirigés 14

			##Auteur : Enseignant
			##École : Collège Marie Victorin 
			##Session : Hiver 2026
			##Titre du cours : Introduction aux bases de données
			##Titre du programme : Devoir #2
			##Version : 1.0
			##Date : 00/00/2026
			##Langage et version : SQL 
			##Moteur : SQL Server Express
		
			-- ==============================================================================
			-- Les requêtes
			-- Base de donnéées : Ecole
			-- Groupe 00001
		
			-- ==============================================================================
				Affichez le nom, le prénom, le titre du cours et la note des étudiants ayant obtenu une note supérieure ou égale à 3.50.
				Triez le résultat par note décroissante, puis par nom.
				****************************************************************************/
				-- Votre code ici
				USE Ecole;
				GO

				SELECT p.Nom,
					   p.Prenom,
					   c.Titre,
					   ne.Note
				FROM dbo.tblNoteEtudiant ne
				JOIN dbo.tblPersonne p
					ON ne.IDEtudiant = p.IDPersonne
				JOIN dbo.tblCours c
					ON ne.IDCours = c.IDCours
				WHERE ne.Note IS NOT NULL
				  AND ne.Note >= 3.50
				ORDER BY ne.Note DESC, p.Nom, p.Prenom;

		
			-- ==============================================================================
				Affichez, pour chaque département qui offre au moins 2 cours, le nom du département, le nombre de cours et la moyenne des crédits.
				Trier par nom de cours decroissant puis par nom.
				*****************************************************************************************/
				-- # Votre code ici
				SELECT d.Nom AS Departement,
					   COUNT(c.IDCours) AS NombreCours,
					   AVG(c.Credits * 1.0) AS MoyenneCredits
				FROM dbo.tblDepartement d
				JOIN dbo.tblCours c
					ON d.IDDepartement = c.IDDepartement
				GROUP BY d.Nom
				HAVING COUNT(c.IDCours) >= 2
				ORDER BY NombreCours DESC, d.Nom;
		
			-- ==============================================================================
				-- # Votre code ici
				SELECT p.Nom,
					   p.Prenom,
					   c.Titre,
					   ne.Note
				FROM dbo.tblNoteEtudiant ne
				JOIN dbo.tblPersonne p
					ON ne.IDEtudiant = p.IDPersonne
				JOIN dbo.tblCours c
					ON ne.IDCours = c.IDCours
				WHERE ne.Note IS NOT NULL
				  AND ne.Note > (
					  SELECT AVG(ne2.Note * 1.0)
					  FROM dbo.tblNoteEtudiant ne2
					  WHERE ne2.IDCours = ne.IDCours
						AND ne2.Note IS NOT NULL
				  )
				ORDER BY c.Titre, ne.Note DESC, p.Nom, p.Prenom;
		
			-- ==============================================================================
			-- Les requêtes
			-- Base de donnéées : Ecole
			-- Groupe 00002
		
			-- ==============================================================================
				Affichez le titre du cours, le nom du département, l’emplacement, les jours et l’heure des cours présentiels :
				donnés dans un local contenant Smith
				et ayant lieu avant 12:00
				****************************************************************************/
				-- Votre code ici
				SELECT c.Titre,
					   d.Nom AS Departement,
					   cp.Emplacement,
					   cp.Jours,
					   cp.Heure
				FROM dbo.tblCoursPresentiel cp
					JOIN dbo.tblCours c
						ON cp.IDCours = c.IDCours
					JOIN dbo.tblDepartement d
						ON c.IDDepartement = d.IDDepartement
				WHERE 
					cp.Emplacement LIKE '%Smith%' AND 
					--CONVERT(time, cp.Heure) < '12:00:00'
					cp.Heure < '1900-01-01 12:00:00'
				ORDER BY 
					cp.Heure, 
					c.Titre;
		
			-- ==============================================================================
				Affichez les cours ayant au moins 3 inscriptions.
				Pour chacun, affichez :

				le titre du cours
				le nombre d’inscriptions
				la moyenne des notes (en ignorant les notes nulles)
				*****************************************************************************************/
				-- # Votre code ici
				SELECT c.Titre,
					   COUNT(ne.IDInscription) AS NombreInscriptions,
					   AVG(ne.Note * 1.0) AS MoyenneNotes
				FROM dbo.tblCours c
					JOIN dbo.tblNoteEtudiant ne
						ON c.IDCours = ne.IDCours
				GROUP BY 
					c.IDCours, c.Titre
				HAVING 
					COUNT(ne.IDInscription) >= 3
				ORDER BY 
					NombreInscriptions DESC, 
					c.Titre;

		
			-- ==============================================================================
				Affichez les cours dont le nombre de crédits est supérieur à la moyenne des crédits de leur département.
				Affichez le nom du département, le titre du cours et le nombre de crédits.
				*****************************************************************************************/
				-- # Votre code ici
				SELECT d.Nom AS Departement,
					   c.Titre,
					   c.Credits
				FROM dbo.tblCours c
					JOIN dbo.tblDepartement d
						ON c.IDDepartement = d.IDDepartement
				WHERE c.Credits > (
					SELECT AVG(c2.Credits * 1.0)
					FROM dbo.tblCours c2
					WHERE c2.IDDepartement = c.IDDepartement
				)
				ORDER BY 
					d.Nom, 	
					c.Credits DESC, 
					c.Titre;
		
			-- ==============================================================================
			-- Les requêtes
			-- Base de donnéées : Ecole
			-- Groupe 00003
		
			-- ==============================================================================
				Affichez le nom du département, le budget, ainsi que le nom et prénom de l’administrateur pour les départements :
				dont le budget est supérieur ou égal à 200000
				et dont la date de début est le 2007-09-01
				****************************************************************************/
				-- Votre code ici
				SELECT d.Nom AS Departement,
					   d.Budget,
					   p.Nom,
					   p.Prenom
				FROM dbo.tblDepartement d
				JOIN dbo.tblPersonne p
					ON d.IDAdministrateur = p.IDPersonne
				WHERE d.Budget > 20000
				  AND d.IDAdministrateur in (4,2)
				ORDER BY d.Budget DESC;
		
			-- ==============================================================================
				Affichez les étudiants ayant obtenu au moins 2 notes non nulles.
				Pour chacun, affichez :
				le nom
				le prénom
				le nombre de notes
				la moyenne des notes
				*****************************************************************************************/
				-- # Votre code ici
				SELECT p.Nom,
					   p.Prenom,
					   COUNT(ne.Note) AS NombreNotes,
					   AVG(ne.Note * 1.0) AS MoyenneNotes
				FROM dbo.tblPersonne p
				JOIN dbo.tblNoteEtudiant ne
					ON p.IDPersonne = ne.IDEtudiant
				WHERE ne.Note IS NOT NULL
				GROUP BY /*p.IDPersonne,*/ p.Nom, p.Prenom
				HAVING COUNT(ne.Note) >= 2
				ORDER BY p.Nom desc

		
			-- ==============================================================================
				Affichez les départements dont le nombre de cours est supérieur à la moyenne du nombre de cours par département.
				Affichez le nom du département et le nombre de cours.
				*****************************************************************************************/
				-- # Votre code ici
				SELECT d.Nom AS Departement,
					   COUNT(c.IDCours) AS NombreCours
				FROM dbo.tblDepartement d
				JOIN dbo.tblCours c
					ON d.IDDepartement = c.IDDepartement
				GROUP BY d.Nom
				HAVING COUNT(c.IDCours) > (
					SELECT AVG(CAST(x.NbCours AS decimal(10,2)))
					FROM (
						SELECT COUNT(*) AS NbCours
						FROM dbo.tblCours
						GROUP BY IDDepartement
					) AS x
				)
				ORDER BY NombreCours DESC, d.Nom;
		
		

W3schools

Python.org