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.


Serie d'exercices sur les requêtes sélection

Travaux dirigés 6

		##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 7 - Révision
		##Version : 1.0
		##Date : 00/00/2025
		##Langage et version : SQL 
		##Moteur : SQL Server Express
	
		- Base de données : Xtreme

		-- En utilisant la base de données Xtreme, créer les requêtes qui correspondent aux énoncés suivants.

		-- Requête 1
		-- Lister les noms des clients ainsi que les détails de leurs commandes (numéro de commande, montant)
		-- La liste sera triée par le nom du client
		-- On affichera : 
		-- le nom du client
		-- le numéro de la commande
		-- le Montant de la commande

		-- Votre code ici

		SELECT 
			  C.[Nom du client]
			, B.[ID commande]
			, B.[Montant commande]
		FROM 
			[Clients] C, [Commandes] B 
		WHERE 
			C.[ID client] = B.[ID client]
		ORDER BY 1;

      

	  
		-- Requête 2
		-- Écrire une requête qui affiche les noms des produits et leur fournisseur associé.
		-- La liste ne doit pas contenir de doublons

		-- On affichera : 
		-- le nom du fournisseur
		-- le nom du produit

		-- Votre code ici

		SELECT DISTINCT
			F.[Nom du fournisseur]
			, P.[Nom du produit]
		FROM 
			[Produits] P, [Fournisseurs] F
		WHERE 
			P.[ID fournisseur] = F.[ID fournisseur];

      

	  
		-- Requête 3 (revoir l'énoncé)
		-- Écrire une requête qui affiche les employés qui ont traité des commandes qui ont été expédiées et dont le paiement a été reçu
		-- La liste sera triée par le nom de l'employé
		-- On affichera : 
		-- le nom complet de l'employé
		-- le numéro de la commande (ID Commande)
		-- La date de la commande
		-- le Montant de la commande
		-- Indicateur d'expédition
		-- Indicateur de réception de paiement

		-- Votre code ici

		SELECT 
			E.[Nom]
			, E.[Prénom]
			, C.[ID commande]
			, C.[Date de commande]
			, C.[Montant commande]
			, C.[Commande expédiée]
			, C.[Paiement reçu]
		FROM 
			[Employés] E, [Commandes] C
		WHERE
			E.[ID employé] = C.[ID employé]
			AND C.[Commande expédiée] = 1
			AND C.[Paiement reçu] = 1;

      

	  
		-- Requête 4
		-- Écrire une requête qui affiche l'adresse des employés ainsi que leur nom et prénom et les personnes contact

		-- On affichera : 
		-- le nom et prénom de l'employé
		-- l'adresse de l'employé
		-- la ville de l'employé
		-- Nom et prenom de la personne contact
		-- Lien de parenté de la personne contact
		-- Telephone contat

		-- Votre code ici

		SELECT 
			  E.[Nom]
			, E.[Prénom]
			, A.[Adresse 1]
			, A.[Ville]
			, CONCAT(E.[En cas d'urgence - Nom], ' ', E.[En cas d'urgence - Prénom]) Contact
			, E.[En cas d'urgence - Lien de parenté]
			, [En cas d'urgence - Téléphone]
		FROM 
			[Adresses des employés] A, [Employés] E
		WHERE
			A.[ID employé] = E.[ID employé];

      

	  
		-- Requête 5
		-- Écrire une requête qui affiche les produits achetés dans une commande spécifique (par exemple, ID commande = 1, 1006, 1060).

		-- On affichera : 
		-- Le numéro de commande
		-- le nom du produit
		-- la quantite commandée
		-- le prix unitaire du produit

		-- Votre code ici

		SELECT
			D.[ID commande]
			, P.[Nom du produit]
			, D.[Quantité]
			, D.[Prix unitaire]
		FROM 
			[Détails des commandes] D, [Produits] P
		WHERE 
			D.[ID produit] = P.[ID produit]
			AND D.[ID commande] IN (1, 1006, 1060);

      

	  
		-- Requête 6
		-- Écrire une requête qui calcule le total des ventes par client.
		-- La liste sera triée en ordre décroissant du total des ventes
		-- On affichera : 
		-- le nom du client
		-- Total des ventes 

		-- Votre code ici

		SELECT 
			C.[Nom du client]
			, SUM(D.[Montant commande]) AS TotalVentes
		FROM 
			[Clients] C, [Commandes] D
		WHERE 
			C.[ID client] = D.[ID client]
		GROUP BY 
			C.[Nom du client]
		ORDER BY 
			SUM(D.[Montant commande]) DESC ;

      


		-- Requête 7
		-- Écrire une requête qui compte le nombre de commandes traitées par chaque employé. 
		-- La liste sera triée en ordre croissant par pays et en ordre décroissant du montant d’achat.
		-- On affichera : 
		-- le nom de l'employé
		-- le prénom de l'employé
		-- le nombre de commandes

		-- Votre code ici

		SELECT 
			E.[Nom], 
			E.[Prénom], 
			COUNT(C.[ID commande]) AS NombreCommandes
		FROM 
			[Employés] E, [Commandes] C
		WHERE 
			E.[ID employé] = C.[ID employé]
		GROUP BY 
			E.[Nom], E.[Prénom];
	
      

	  
		-- Requête 8 
		-- Écrire une requête qui calcule le nombre total d'unités en stock par fournisseur.
		-- 
		-- On affichera : 
		-- le nom du fournisseur
		-- le nombre total d'unités en stock

		-- Votre code ici

		SELECT 
			F.[Nom du fournisseur]
			, SUM(A.[Unités en stock]) AS TotalStock
		FROM 
			[Produits] P, 
			[Fournisseurs] F, 
			Achats A
		WHERE 
			P.[ID fournisseur] = F.[ID fournisseur]
			AND P.[ID produit] = A.[ID produit]
		GROUP BY 
			F.[Nom du fournisseur];
      

	  
		-- Requête 9
		-- Écrire une requête qui calcule la quantité maximum, minimum, moyenne et totale commandée pour chaque produit.
		-- On affichera : 
		-- le nom du produit
		-- la quantité maximum
		-- la quantité minimum
		-- la quantité moyenne
		-- la quantité totale

		-- Votre code ici

		SELECT 
			P.[Nom du produit]
			, MAX(D.[Quantité]) AS QuantiteMaximum
			, MIN(D.[Quantité]) AS QuantiteMinimum
			, AVG(D.[Quantité]) AS QuantiteMoyenne
			, SUM(D.[Quantité]) AS QuantiteTotale
		FROM 
			[Détails des commandes] D, [Produits] P
		WHERE 
			D.[ID produit] = P.[ID produit]
		GROUP BY 
			P.[Nom du produit];
			
      

	  
		-- Requête 10
		-- Écrire une requête qui calcule le total des crédits accordés à chaque client.
		-- On affichera : 
		-- le nom du client
		-- le total de crédit accordé

		-- Votre code ici

		SELECT 
			CL.[Nom du client], 
			SUM(CR.[Montant]) AS TotalCredits
		FROM 
			[Clients] CL, [Crédits] CR
		WHERE 
			CL.[ID client] = CR.[ID crédit client]
		GROUP BY 
			CL.[Nom du client];
			
      

	  
		-- Requête 11
		-- Écrire une requête qui affiche les clients ayant passé plus de 30 commandes.
		-- On affichera : 
		-- le nom du client
		-- le nombre de commande

		-- Votre code ici

		SELECT 
			C.[Nom du client]
			, COUNT(D.[ID commande]) AS NombreCommandes
		FROM 
			[Clients] C, [Commandes] D
		WHERE 
			C.[ID client] = D.[ID client]
		GROUP BY 
			C.[Nom du client]
		HAVING 
			COUNT(D.[ID commande]) > 30;
			
      

	  
		-- Requête 12
		-- Écrire une requête qui affiche les produits dont la quantité totale commandée dépasse 100 unités.
		-- On affichera : 
		-- le nom du produit
		-- le nombre total de commandée

		-- Votre code ici

		SELECT 
			P.[Nom du produit]
			, SUM(D.[Quantité]) AS QuantiteTotale
		FROM 
			[Détails des commandes] D, [Produits] P
		WHERE 
			D.[ID produit] = P.[ID produit]
		GROUP BY 
			P.[Nom du produit]
		HAVING 
			SUM(D.[Quantité]) > 100;	
			
      

	  		
      

	  
		-- Requête 16
		-- Ecrire une requête qui affiche les fournisseurs ayant fourni des produits dont la quantité totale vendue dépasse 200 unités.
		-- Afficher les quantités les plus vendues en premier

		-- On affichera : 
		-- le nom du fournisseur
		-- la quantité totale vendue

		-- Votre code ici

		SELECT 
			F.[Nom du fournisseur]
			, SUM(D.[Quantité]) AS QuantiteTotale
		FROM 
			[Détails des commandes] D,
			[Produits] P,
			[Fournisseurs] F 
		WHERE 
			D.[ID produit] = P.[ID produit]
			AND P.[ID fournisseur] = F.[ID fournisseur]
		GROUP BY 
			F.[Nom du fournisseur]
		HAVING 
			SUM(D.[Quantité]) > 200
		ORDER BY SUM(D.[Quantité]) DESC;  
		
	  

	  
		-- Requête 17
		-- Ecrire une requête qui affiche les employés ayant traité les commandes des clients 1, 3, 10, 20, 71, 77
		-- dont le montant total est supérieur à 5000.
		-- La liste sera triée par le nom de l'employé puis par le total commande en ordre décroissant

		-- On affichera : 
		-- le nom de l'employé
		-- le prénom de l'employé
		-- le Montant total de la commande

		-- Votre code ici

		SELECT 
			E.[Nom]
			, E.[Prénom]
			, C.[ID client]
			, SUM(D.[Montant commande]) AS TotalMontant
		FROM 
			[Employés] E,
			[Commandes] D,
			[Clients] C
		WHERE 
			E.[ID employé] = D.[ID employé]
			AND C.[ID client] = D.[ID client]
			AND D.[ID client] IN (1, 3, 10, 20, 71, 77)
		GROUP BY 
			E.[Nom], E.[Prénom],C.[ID client]
		HAVING 
			SUM(D.[Montant commande]) > 5000
		ORDER BY 1, 4 DESC;  
		
	  
	  
		-- Requête 18
		-- Écrire une requête qui Liste les clients ayant acheté des produits d'une valeur totale supérieure à 50000.
		-- 
		-- On affichera : 
		-- le nom du client
		-- la valeur totale

		-- Votre code ici

		SELECT 
			C.[Nom du client]
			, SUM(D.[Prix unitaire] * D.[Quantité]) AS ValeurTotale
		FROM 
			[Clients] C,
			[Commandes] M,
			[Détails des commandes] D 
		WHERE
			C.[ID client] = M.[ID client]
			AND M.[ID commande] = D.[ID commande]
		GROUP BY 
			C.[Nom du client]
		HAVING 
			SUM(D.[Prix unitaire] * D.[Quantité]) > 50000;  
			
	  
	  
		-- Requête 19
		-- Écrire une requête qui identifie les types de produits ayant généré un chiffre d'affaires total supérieur à 10 000.
		-- On afficvhera les produits ayant été le plus vendus en premier

		-- On affichera : 
		-- le nom du type du produit
		-- le chiffre d'affaires

		-- Votre code ici

		SELECT 
			T.[Nom du type de produit]
			, SUM(D.[Prix unitaire] * D.[Quantité]) AS ChiffreAffaires
		FROM 
			[Types de produit] T,
			[Produits] P ,
			[Détails des commandes] D 
		WHERE 
			T.[ID type de produit] = P.[ID type de produit]
			AND P.[ID produit] = D.[ID produit]
		GROUP BY 
			T.[Nom du type de produit]
		HAVING 
			SUM(D.[Prix unitaire] * D.[Quantité]) > 10000
		ORDER BY 
			SUM(D.[Prix unitaire] * D.[Quantité]) DESC;	 
			
	  
	  
		-- Requête 20
		-- Écrire une requête qui affiche les régions où le nombre total de commandes est supérieur à 10.
		-- 
		-- On affichera : 
		-- la région
		-- le numéro de la commande
		-- le nombre de commandes
		-- La liste affichera les 10 régions ou il y a le plus de commandes en premier.

		-- Votre code ici

		SELECT TOP 10
			C.Région
			, COUNT(M.[ID commande]) AS NombreCommandes
		FROM 
			[Clients] C,
			[Commandes] M 
		WHERE 
			C.[ID client] = M.[ID client]	
		GROUP BY 
			C.Région
		HAVING 
			COUNT(M.[ID commande]) > 10
		ORDER BY 
			COUNT(M.[ID commande]) DESC;
			
	  
  
	  
  
	  
  
	  

W3schools

Python.org