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 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