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.


Laboratoire

Laboratoire 7

		##Auteur : Enseignant
		##École : Collège Marie Victorin 
		##Session : Hiver 2025
		##Titre du cours : Introduction aux bases de données
		##Titre du programme : Laboratoire 7 - Calcul de boni
		##Version : 1.0
		##Date : 00/00/2025
		##Langage et version : SQL 
		##Moteur : SQL Server Express
	
		/*****************************************************************************************
		## =======================================
		## Laboratoire 7 - Voir énoncé
		## =======================================
		******************************************************************************************/

		-- Objectif : 
		-- Ce Laboratoire vise à résoudre un problème d'entreprise
		-- en utilisant les notions de base de données vues en cours
		-- Calcul du bonus que recevront les employés de la compagnie Pierres bleues en fin d'année
		-- 
		-- ========================================================================================

      

	  
		-- Base de données à utiliser : Bonis

		USE Bonis;
		GO


		-- *****************************************************************************************************************************************
		-- Écrire une requête affiche les données des employés suivantes
		-- *****************************************************************************************************************************************
		-- No employé
		-- Le nom de l'employé
		-- Le prénom de l'employé
		-- Le numéro du poste de l'employé
		-- La description du poste de l'employé
		-- Le département de l'employé
		-- Le taux horaire
		-- Le nombre de semaine travaillées
		-- Le salaire annuel

		SELECT
			 EM.[No]
			,EM.[Nom]
			,EM.[Prenom]
			,EM.[Departement]
			,EM.[Nb_sem]
			,EP.[No_Poste]
			,EP.[Catégorie]
			,P.[Fonction]
			,P.[Grade]
			,P.[Taux_horaire]
			,P.[Salaire_annuel]
		FROM
			[dbo].[tblEmployes] EM,
			[dbo].[tblEmployesPostes] EP,
			[dbo].[tblPostes] P
		WHERE
			EP.[No] = EM.[No] AND
			P.[No_Poste] = EP.[No_Poste];

			
		-- Créer une table temporaire qui contient les employeés syndiqués

		DROP TABLE IF EXISTS tempEmpSyndiques;

		SELECT
			*
		INTO tempEmpSyndiques
		FROM
			(
				SELECT
					 EM.[No]
					,EM.[Nom]
					,EM.[Prenom]
					,EM.[Departement]
					,EM.[Nb_sem]
					,EP.[No_Poste]
					,EP.[Catégorie]
					,P.[Fonction]
					,P.[Grade]
					,P.[Taux_horaire]
					,P.[Salaire_annuel]
					,EV.[Ventes]
				FROM
					[dbo].[tblEmployes] EM,
					[dbo].[tblEmployesPostes] EP,
					[dbo].[tblPostes] P,
					[dbo].[tblEmployeVentes] EV
				WHERE
					EP.[No] = EM.[No] AND
					P.[No_Poste] = EP.[No_Poste] AND
					EV.[No] = EM.[No] AND
					EP.[Catégorie] = 'S'
			) temp


		-- Vérifier la création de la nouvelle table

		 SELECT * FROM tempEmpSyndiques;

		-- Modifier la structure de la table tempEmpSyndiques en ajoutant les colonnes suivantes :
		-- Le montant des gains 
		-- Le pourcentage de la commission
		-- Le montant de la commission

		ALTER TABLE tempEmpSyndiques
			DROP COLUMN IF EXISTS MontantGains;

		ALTER TABLE tempEmpSyndiques
			DROP COLUMN IF EXISTS PourcCommission;

		ALTER TABLE tempEmpSyndiques
			DROP COLUMN IF EXISTS MontantCommission;

		ALTER TABLE tempEmpSyndiques
		ADD MontantGains money,
			PourcCommission int,
			MontantCommission money;

		GO
		-- Vérifier et afficher la nouvelle structure
		EXEC sp_help tempEmpSyndiques;

		-- **************************************
		-- Traitement des employés syndiqués
		-- *************************************
		-- Calculer la commission que les employés syndiqués recevront
		-- On affichera :
		-- Toutes les colonnes de la table tempEmpSyndiques
		-- Le montant des ventes réalisées
		-- Le pourcentage de la commission
		-- Le montant des gains
		-- Le montant de la commission
		 
		 -- Effectuer la mise à jour du montant des gains
		 -- Quelle est l'expression qui permet de calculer le montant des gains ?
		 -- Taux horaire * Nb Heures par sem * Nb de sem

		 UPDATE tempEmpSyndiques
		 SET MontantGains = /*37.5*/ CAST([Taux_horaire] AS float) * CAST([Nb_Sem] AS float) * 37.5;

		 -- Vérifier la mise à jour
		 SELECT * FROM tempEmpSyndiques;

		 -- Effectuer la mise à jour du pourcentrage de la commission
		 UPDATE tempEmpSyndiques
		 SET PourcCommission = (
									CASE 
										WHEN [Ventes] <= 0 THEN 0
										WHEN [Ventes] <= 2500 THEN 1
										WHEN [Ventes] <= 5000 THEN 2
										WHEN [Ventes] <= 10000 THEN 5
										WHEN [Ventes] <= 15000 THEN 8
										WHEN [Ventes] <= 25000 THEN 10
										WHEN [Ventes] <= 50000 THEN 12
										WHEN [Ventes] <= 100000 THEN 15
										WHEN [Ventes] <= 200000 THEN 18
										WHEN [Ventes] <= 300000 THEN 20
									ELSE 25
									END
								);

		-- Vérifier la mise à jour du pourcentage de la commission
		SELECT * FROM tempEmpSyndiques;

		 -- Efectuer la mise à jour du montant de la commission
		 UPDATE tempEmpSyndiques
		 SET MontantCommission = MontantGains * PourcCommission  / 100


		-- Vérifier la mise à jour du montant de la commission
		SELECT * FROM tempEmpSyndiques;


		-- *********************************************
		-- *** Traitement des employés non syndiqués ***
		-- *********************************************
		-- Créer une table qui contient les employés non syndiqués

		DROP TABLE IF EXISTS temEmpNonSyndiques;

		SELECT
			*
		INTO temEmpNonSyndiques
		FROM
			(
				SELECT
					 EM.[No]
					,EM.[Nom]
					,EM.[Prenom]
					,EM.[Departement]
					,EM.[Nb_sem]
					,EP.[No_Poste]
					,EP.[Catégorie]
					,P.[Fonction]
					,P.[Grade]
					,P.[Taux_horaire]
					,P.[Salaire_annuel]
				FROM
					[dbo].[tblEmployes] EM,
					[dbo].[tblEmployesPostes] EP,
					[dbo].[tblPostes] P,
					[dbo].[tblBonis] B
				WHERE
					EP.[No] = EM.[No] AND
					P.[No_Poste] = EP.[No_Poste] AND
					B.[Grade] = P.[Grade] AND
					EP.[Catégorie] = 'N'
			) temp


		-- Vérifier la création de la nouvelle table

		 SELECT * FROM temEmpNonSyndiques;

		-- Modifier la structure de la table temEmpNonSyndiques en ajoutant les colonnes suivantes :
		-- Le montant des gains 
		-- Le pourcentage du boni
		-- Le montant du boni

		ALTER TABLE temEmpNonSyndiques
			DROP COLUMN IF EXISTS MontantGains;

		ALTER TABLE temEmpNonSyndiques
			DROP COLUMN IF EXISTS PourcBoni;

		ALTER TABLE temEmpNonSyndiques
			DROP COLUMN IF EXISTS MontantBoni;

		ALTER TABLE temEmpNonSyndiques
		ADD MontantGains money,
			PourcBoni decimal(5,2),
			MontantBoni money;

		GO

		-- Vérifier et afficher la nouvelle structure
		EXEC sp_help temEmpNonSyndiques;


		-- Calculer le boni que les employés non syndiqués recevront
		-- On affichera :
		-- Toutes les colonnes de la table tempEmpNonSyndiques
		-- Le montant des gains
		-- Le pourcentage du boni
		-- Le montant du boni
		 
		 -- Effectuer la mise à jour du montant des gains
		 -- Quelle est l'expression qui permet de calculer le montant des gains ?
		 -- Taux horaire * Nb Heures par sem * Nb de sem

		 UPDATE temEmpNonSyndiques
		 SET MontantGains = CAST([Taux_horaire] AS float) * CAST([Nb_Sem] AS float) * 37.5;

		 -- Vérifier la mise à jour
		 SELECT * FROM temEmpNonSyndiques;


		-- Effectuer la mise à jour du pourcentage du boni
		 UPDATE temEmpNonSyndiques
		 SET PourcBoni = (
							CASE 
								WHEN [Grade] = 'MP1' THEN 5
								WHEN [Grade] = 'MP2' THEN 10
								WHEN [Grade] = 'MP3' THEN 15
								WHEN [Grade] = 'MP4' THEN 30
								WHEN [Grade] = 'MP5' THEN 40
								WHEN [Grade] = 'MP6' THEN 100
							ELSE 0
							END
							)

		-- Vérifier la mise à jour
		 SELECT * FROM temEmpNonSyndiques;


		 -- Efectuer la mise à jour du montant du boni
		 UPDATE temEmpNonSyndiques
		 SET MontantBoni = MontantGains * PourcBoni / 100

		-- Vérifier la mise à jour du montant du boni
		SELECT * FROM temEmpNonSyndiques;

		-- ***************  Création de la table des paiements (tblEmpPaiement)
		DROP TABLE IF EXISTS tblEmpPaiement;

		CREATE TABLE tblEmpPaiement
		(
			NoEmploye int primary key not null,
			NomEmploye nvarchar(30),
			PrenomEmploye nvarchar(30),
			GradeEmploye nvarchar(3),
			Gains money,
			PourcentageBoni decimal(5,2),
			MontantBoni money
		)


		--Ajout des montant des employés syndiqués
		INSERT INTO tblEmpPaiement
		SELECT
			 [No]
			,[Nom]
			,[Prenom]
			,[Grade]
			,[MontantGains]
			,PourcCommission
			,[MontantCommission]
		FROM [dbo].[tempEmpSyndiques];


		--Ajout des montant des employés non syndiqués
		INSERT INTO tblEmpPaiement
		SELECT
			 [No]
			,[Nom]
			,[Prenom]
			,[Grade]
			,[MontantGains]
			,PourcBoni
			,[MontantBoni]
		FROM [dbo].[temEmpNonSyndiques];


		-- Vérification de la table des paiements
		SELECT * FROM tblEmpPaiement;


		-- Nettoyage de l'environnement
		-- Suppression des tables temporaires
		DROP TABLE IF EXISTS tempEmpSyndiques;

		DROP TABLE IF EXISTS tempEmpNonSyndiques;

		GO

		-- ************************  FIN de PROGRAMME *************************
		
      

	  

      

	  

      

W3schools

Python.org