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 de révision - Série II

Travaux dirigés 12 - Série II - Révision

		##Auteur : Enseignant
		##École : Collège Marie Victorin 
		##Session : Hiver 2025
		##Titre du cours : Introduction aux bases de données
		##Titre du programme : Travaux dirigés 12 - Révision
		##Version : 1.0
		##Date : 00/00/2025
		##Langage et version : SQL 
		##Moteur : SQL Server Express
	
		/*****************************************************************************************
		## =======================================
		## Travaux dirigés 12 - Série II 
		## Révision
		## 
		## 
		## =======================================
		******************************************************************************************/

		/*****************************************************************************************
		## Cette série de requête vous permettra de réviser les notions aquises au cours de la session
		## 
		******************************************************************************************/
      

		-- Base de données : xtremefr
		USE xtremefr;
		GO

		-- Sderie II

		-- Afficher la liste des clients ayant acheté des produits valant plus de 500$
		-- On affichera :
		-- Le nom du client
		-- La catégorie
		-- Le nom du produit
		-- Le prix unitaire
		-- La quantité
		-- La date de la commande

		-- Votre code ici
		SELECT 
			[Nom du client]
			, PR.[Nom du produit]
			, TP.[Nom du type de produit]
			, DC.[Prix unitaire]
			, DC.Quantité
			, CO.[Date de commande]
		FROM
			[dbo].[Clients] CL,
			[dbo].[Commandes] CO,
			[dbo].[Détails des commandes] DC,
			[dbo].[Produits] PR,
			[dbo].[Types de produit] TP
		WHERE 
			CL.[ID client] = CO.[ID client] AND
			CO.[ID commande] = DC.[ID commande] AND
			DC.[ID produit] = PR.[ID produit] AND
			PR.[ID type de produit] = TP.[ID type de produit] AND
			DC.[Prix unitaire] > 500
		ORDER BY 1, 2;

		-- -----------------------------------------------------------------
		-- Créer une vue qui contient les données de la requête précédente
		-- -----------------------------------------------------------------
		-- Votre code ici
		DROP VIEW IF EXISTS vClientsProduits;
		GO

		CREATE VIEW vClientsProduits
		AS
		(
			SELECT 
				[Nom du client]
				, PR.[Nom du produit]
				, TP.[Nom du type de produit]
				, DC.[Prix unitaire]
				, DC.Quantité
				, CO.[Date de commande]
			FROM
				[dbo].[Clients] CL,
				[dbo].[Commandes] CO,
				[dbo].[Détails des commandes] DC,
				[dbo].[Produits] PR,
				[dbo].[Types de produit] TP
			WHERE 
				CL.[ID client] = CO.[ID client] AND
				CO.[ID commande] = DC.[ID commande] AND
				DC.[ID produit] = PR.[ID produit] AND
				PR.[ID type de produit] = TP.[ID type de produit] AND
				PR.[Prix conseillé] > 500
		);
		GO

		-- -------------------------------------------------------------------------------------------------------------------------------
		-- Maintenant, on veut savoir combien de fois chaque client a acheté le même produit ainsi que la quantité totale et coût total de ce produit
		-- On affichera :
		-- Le nom du client
		-- Le nom du produit
		-- Le nombre de fois que le produit a été acheté
		-- La quantité totale achetée
		-- Le montant total acheté

		-- Votre code ici
		SELECT 
			 V.[Nom du client]
			,V.[Nom du produit]
			,COUNT(V.[Nom du produit]) NbFois
			,SUM(V.Quantité) QteTotale
			,SUM(V.[Prix unitaire] * V.Quantité) MontantTotal
		FROM vClientsProduits V
		GROUP BY
			  V.[Nom du client]
			, V.[Nom du produit];

		-- --------------------------------------------------------------------------
		-- Créer la table tblStatsClients contenant les données calculées plus haut

		-- Votre code ici
		DROP TABLE IF EXISTS tblStatsClients;

		SELECT *
		INTO tblStatsClients
		FROM 
			(
				SELECT 
					 V.[Nom du client]
					,V.[Nom du produit]
					,COUNT(V.[Nom du produit]) NbFois
					,SUM(V.Quantité) QteTotale
					,SUM(V.[Prix unitaire] * V.Quantité) MontantTotal
				FROM vClientsProduits V
				GROUP BY
					  V.[Nom du client]
					, V.[Nom du produit]
			) temps;

		-- ---------------------------------------------------
		-- Afficher la liste des 10 meilleurs clients

		-- Votre code ici
		SELECT TOP 10 * FROM tblStatsClients
		ORDER BY MONTANTTotal DESC;

		-- --------------------------------------------------------
		-- Afficher la liste des 10 produits les plus profitables

		-- Votre code ici
		SELECT TOP 5 
			 V.[Nom du produit]
			,SUM(V.MontantTotal) TotalVenteProduit
		FROM tblStatsClients V
		GROUP BY V.[Nom du produit]
		ORDER BY SUM(V.MontantTotal) DESC;
      

	  

      

	  

      

W3schools

Python.org