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.


Devoirs

Devoir 3

			##Auteur : Enseignant
			##École : Collège Marie Victorin 
			##Session : Hiver 2026
			##Titre du cours : Introduction aux bases de données
			##Titre du programme : Devoir #3
			##Version : 1.0
			##Date : 00/00/2026
			##Langage et version : SQL 
			##Moteur : SQL Server Express
		
			-- ==============================================================================
			-- Les requêtes
			-- Base de donnéées : AdventureWorksEvalFR			
		
			Requete I
			*****************************************************************************************
			Écrire une requête qui affiche les employés actifs embauchés depuis le 1er janvier 2008 et ayant soit au moins 40 heures de vacances, soit au moins 40 heures de maladie. 

			On affichera les colonnes suivantes : 
			•	L’identifiant de l’employé
			•	Le titre du poste
			•	La date d’embauche
			•	Le sexe
			•	Les heures de vacances
			•	Les heures de maladie

			Trier les résultats par date d’embauche croissante.
			****************************************************************************/
			-- Votre code ici
			USE AdventureWorksEvalFR;
			GO

			SELECT
				IDEntiteAffaires,
				TitrePoste,
				DateEmbauche,
				Sexe,
				HeuresVacances,
				HeuresMaladie
			FROM dbo.Employe
			WHERE EstActuel = 1
			  AND DateEmbauche >= '2008-01-01'
			  AND (
					HeuresVacances >= 40
					OR HeuresMaladie >= 40
				  )
			ORDER BY DateEmbauche;

		
			Requete II
			*****************************************************************************************
			Écrire une requête qui affiche la liste des employés actifs avec leur département actuel et leur quart de travail. Seuls les employés actuellement en poste dans un département doivent être affichés.

			•	L’identifiant de l’employé
			•	Le prénom
			•	Le nom de famille
			•	Le titre du poste 
			•	Le nom du département
			•	Le groupe du département
			•	Le nom du quart de travail


			*****************************************************************************************/
			-- # Votre code ici
			SELECT
				e.IDEntiteAffaires,
				p.Prenom,
				p.NomFamille,
				e.TitrePoste,
				d.Nom AS NomDepartement,
				d.NomGroupe,
				q.Nom AS NomQuartTravail
			FROM dbo.Employe e
			INNER JOIN dbo.Personne p
				ON e.IDEntiteAffaires = p.IDEntiteAffaires
			INNER JOIN dbo.HistoriqueDepartementEmploye hde
				ON e.IDEntiteAffaires = hde.IDEntiteAffaires
			INNER JOIN dbo.Departement d
				ON hde.IDDepartement = d.IDDepartement
			INNER JOIN dbo.QuartTravail q
				ON hde.IDQuartTravail = q.IDQuartTravail
			WHERE e.EstActuel = 1
			  AND hde.DateFin IS NULL
			ORDER BY d.Nom, p.NomFamille, p.Prenom;
		
			Requete III
			*****************************************************************************************
			Écrire une requête qui affiche les départements qui comptent plus cinq (5) employés actifs et 
			dont le taux horaire moyen du département est supérieur au taux horaire moyen global des employés actifs.
			On affichera les colonnes : 
			•	Le nom du département
			•	Le groupe du département
			•	Le nombre d’employés
			•	Le taux horaire moyen

			*****************************************************************************************/
			-- # Votre code ici
			-- ----------------------
			-- version I
			-- ----------------------
			SELECT
				d.Nom AS NomDepartement,
				d.NomGroupe,
				COUNT(e.IDEntiteAffaires) AS NombreEmployes,
				AVG(hp.Taux) AS TauxHoraireMoyen
			FROM dbo.Employe e
			INNER JOIN dbo.HistoriqueDepartementEmploye hde
				ON e.IDEntiteAffaires = hde.IDEntiteAffaires
			INNER JOIN dbo.Departement d
				ON hde.IDDepartement = d.IDDepartement
			INNER JOIN dbo.HistoriquePaieEmploye hp
				ON e.IDEntiteAffaires = hp.IDEntiteAffaires
			WHERE e.EstActuel = 1
			  AND hde.DateFin IS NULL
			  AND hp.DateChangementTaux = (
					SELECT MAX(hp2.DateChangementTaux)
					FROM dbo.HistoriquePaieEmploye hp2
					WHERE hp2.IDEntiteAffaires = e.IDEntiteAffaires
				  )
			GROUP BY
				d.Nom,
				d.NomGroupe
			HAVING COUNT(e.IDEntiteAffaires) > 5
			   AND AVG(hp.Taux) > (
					SELECT AVG(hp3.Taux)
					FROM dbo.Employe e3
					INNER JOIN dbo.HistoriquePaieEmploye hp3
						ON e3.IDEntiteAffaires = hp3.IDEntiteAffaires
					WHERE e3.EstActuel = 1
					  AND hp3.DateChangementTaux = (
							SELECT MAX(hp4.DateChangementTaux)
							FROM dbo.HistoriquePaieEmploye hp4
							WHERE hp4.IDEntiteAffaires = e3.IDEntiteAffaires
						  )
				  )
			ORDER BY TauxHoraireMoyen DESC;
		
		

W3schools

Python.org