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 5

		##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 5
		##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
		-- Table : Commandes
		-- Écrire une requête qui affiche les commandes en retard.
		-- Une commande est considérée en retard lorsqu’elle a été expédiée après la date convenue (Date de besoin dans notre cas). 
		-- Ce champ virtuel nous dit de combien de jours la commande est en retard.
		-- On affichera les colonnes suivantes
		-- * L'ID commande
		-- * La date d'expédition
		-- * La date de besoin
		-- * Le montant de la commande
		-- * Le numéro de commande
		-- * Le nombre de jours de retard

		-- Votre code ici
		SELECT 
			[ID commande],
			[Date d'expédition], 
			[Date de besoin], 
			[Montant commande], 
			[Numéro de commande]--,
			--[Date d'expédition] - [Date de besoin] JoursRetard
		FROM [dbo].[Commandes]
		WHERE (((Commandes.[Date d'expédition]) > [Date de besoin]));

		-- Version 2
		--SELECT 
		--	Commandes.[ID commande], 
		--	Commandes.[Date d'expédition], 
		--	Commandes.[Date de besoin], 
		--	[Date d'expédition]-[Date de besoin] AS [En retard]
		--FROM Commandes
		--WHERE ((([Date d'expédition]-[Date de besoin])>0));


      

		-- Requête 2
		-- Table : Commandes
		-- Écrire une requête qui affiche les commandes dont la date d’expédition est inférieure à la date de besoin mais qui n’ont pas encore été expédiée.
		-- On affichera les colonnes suivanates :
		-- •	L’ID Commande
		-- •	Montant de la commande
		-- •	Date de besoin
		-- •	Date d’expédition
		-- •	Commande expédiée

		-- Votre code ici
		SELECT 
			[ID commande], 
			[Montant commande], 
			[Date de commande], 
			[Date de besoin], 
			[Date d'expédition], 
			[Commande expédiée]
		FROM [dbo].[Commandes]
		WHERE ([Date d'expédition] < [Date de besoin] AND [Commande expédiée]= 0);

      

		-- Requête 3
		-- Table : Commandes
		-- Écrire une requête qui affiche les commandes qui ne sont pas en retard et pour lesquelles aucun paiement n’a encore été reçu.
		-- On affichera les colonnes suivanates :
		-- •	L’ID Commande
		-- •	Montant de la commande
		-- •	Date de besoin
		-- •	Date d’expédition

		-- Votre code ici
		SELECT 
			[ID commande], 
			[Montant commande], 
			[Date de besoin], 
			[Date d'expédition], 
			[Paiement reçu]
		FROM [dbo].[Commandes]
		WHERE ((([Date d'expédition])<=[Date de besoin]) AND (([Paiement reçu]) = 0));

      

		-- Requête 4
		-- Le clause GROUP BY
		-- Table : Commandes
		-- Écrire une requête qui affiche le nombre et le montant total des commandes de chaque client. 
		-- Pour faire cette requête, utilisez l’[ID Commande] et non [Numéro de commande]
		-- L'Affichage devra montrer les clients dont le montant total des commandes en premier.
		-- On affichera les colonnes suivanates :
		-- •	L’ID du client
		-- •	Le nombre de commandes
		-- •	Le total des ses commandes

		-- Votre code ici
		SELECT 
			[ID client], 
			COUNT([ID commande]) AS NombreCommandes, 
			SUM([Montant commande]) AS MontantTotalCommandes
		FROM [dbo].[Commandes]
		GROUP BY [ID client]
		ORDER BY SUM(Commandes.[Montant commande]) DESC;

      

		-- Requête 4-bis
		-- Table : Commandes
		-- Modifier la requête précédente en affichant le nombre de commandes et le montant total des commandes traité par chaque employé
		-- On affichera les colonnes suivanates :
		-- •	l'ID de l'employé
		-- •	Le nombre de commandes
		-- •	Le chiffre d'affaires réalisé

		-- Votre code ici
		SELECT 
			[ID employé], 
			COUNT([ID commande]) AS NombreCommandes, 
			SUM([Montant commande]) AS ChiffreAffaires
		FROM [dbo].[Commandes]
		GROUP BY [ID employé]
		ORDER BY SUM([Montant commande]) DESC;

      

		-- Requête 5
		-- Table : Clients
		-- Écrire une requête qui affecte une remise de 5% aux clients dont les commandes de l’année dernière sont supérieures ou égales à 100 000.
		-- On affichera les colonnes suivanates :
		-- •	Le nom du client
		-- •	Les ventes de l'année dernière
		-- *	Le pourcentage de la remise
		-- •	Le montant de la remise

		-- Votre code ici
		SELECT 
			[Nom du client], 
			[Ventes de l'année dernière], 
			0.05 AS Remise,
			[Ventes de l'année dernière] * 0.05
		FROM Clients
		WHERE [Ventes de l'année dernière] >= 100000
		ORDER BY [Ventes de l'année dernière] DESC;

      

		-- Requête 6
		-- Table : Achats
		-- Écrire une requête qui affiche les produits qui ne sont pas en commande.
		-- On affichera les colonnes suivantes :
		-- •	ID Produit
		-- •	Unités en commande
		-- •	Unités en stock
		-- •	Seuil de réapprovisonnement
		-- •	Numéro de commande

		-- Votre code ici
		SELECT 
			[ID produit], 
			[Unités en commande], 
			[Unités en stock],
			[Seuil de réapprovisionnement],
			[Numéro de commande]
		FROM [dbo].[Achats]
		WHERE [Unités en commande] = 0 AND [Numéro de commande] IS NULL;

      

		-- Requête 7
		-- Table : Achats
		-- Écrire une requête qui affiche les produits qui doivent être réapprovisionnés et la nouvelle quantité en stock après le réapprovisionnement

		-- Précisions
		-- ==========
		-- Unités en commande : C’est la quantité du produit commandée auprès des fournisseurs par l'entreprise
		-- Unités en stock : C’est la quantité du produit restant en stock
		-- Seuil de réappro : C’est seuil à partir duquel on doit réapprovisionner le produit
		-- On affichera les colonnes suivanates :
		-- •	ID Produit
		-- •	Unités en stock
		-- •	Seuil de réapprovisionnement
		-- •	Unités en commande
		-- •	Nouveau stock

		-- Votre code ici
		SELECT 
			[ID produit],
			[Unités en stock],
			[Seuil de réapprovisionnement],
			[Unités en commande],
			[Unités en commande] + [Unités en stock] AS [Nouveau stock]
		FROM [dbo].[Achats]
		WHERE ([Unités en stock] <= [Seuil de réapprovisionnement]) AND [Numéro de commande] IS NOT NULL;

      

		-- Requête 8
		-- Table  : ici vous devez déterminer la table qui contient les informations pour écrire la requête.
		-- Écrite une requête qui affiche le nombre de commandes en retard livrées par chaque transporteur.
		-- La liste sera triée par Transporteur
		-- On affichera les colonnes suivanates :
		-- •	Le nom du transporteur
		-- •	Nombre de commandes
		-- •	La Moyenne des commandes

		-- Votre code ici
		SELECT
			[Transporteur],
			COUNT([ID commande]) NombreCommandeParFournisseur,
			AVG([Montant commande]) MoyenneCommandes
		FROM [dbo].[Commandes]
		GROUP BY [Transporteur]
		ORDER BY Transporteur;

      

		-- Requête 9
		-- Table  : ici vous devez déterminer la table qui contient les informations pour écrire la requête
		-- Écrire une requête qui affiche les commandes n’ayant pas de numéro de commande, (pas l’ID Commande) et qui doivent être réapprovisionnés.
		-- On affichera les colonnes suivantes :
		-- •	ID du Produit
		-- •	Unités en commande
		-- •	Unités en stock
		-- •	Numéro de commande
		-- •	Le seuil de réapprovisionnement
		-- •	

		-- Votre code ici
		SELECT 
			[ID produit], 
			[Unités en commande], 
			[Unités en stock],
			[Seuil de réapprovisionnement],
			[Numéro de commande]
		FROM [dbo].[Achats]
		WHERE ([Unités en commande] = 0) AND [Numéro de commande] IS NULL AND [Unités en stock] < [Seuil de réapprovisionnement];

      

		-- Requête 10
		-- Table  : ici vous devez déterminer la table qui contient les informations pour écrire la requête
		-- Écrire une requête qui affiche le nombre et la moyenne des ventes réalisées par chaque employé.
		-- On affichera les colonnes suivantes :
		-- •	Le numéro de l’employé
		-- •	Le nombre de ventes
		-- •	La moyenne des ventes

		-- Votre code ici
		SELECT 
			[ID employé], 
			COUNT([ID commande]) AS NombreCommandes, 
			AVG([Montant commande]) AS ChiffreAffaires
		FROM [dbo].[Commandes]
		GROUP BY [ID employé]

      

		-- Requête 11
		-- Créez une requête qui affiche les statistiques de commandes pour les produits valant plus de 100$.
		-- La liste affichera les statistiques des plus grosses commandes en premier.
		-- On affichera les colonnes suivanates :
		-- •	Le nombre de produits par commande
		-- •	Quantité commandée par commande
		-- •	Le montant total de chaque commande

		-- Votre code ici
		SELECT 
			[ID commande], 
			COUNT([ID produit]) AS NombreProduit, 
			SUM(Quantité) AS QuantiteParCommande, 
			SUM([Prix unitaire] * [Quantité]) AS PrixTotal
		FROM [Détails des commandes]
		WHERE [Prix unitaire] > 100
		GROUP BY [ID commande]
		ORDER BY SUM([Prix unitaire] * [Quantité]) DESC;
		 
      

		-- Requête 12
		-- Modifiez la requête précédente pour afficher les 10 produits les plus rentables.
		-- 

		-- Votre code ici
		SELECT TOP 10
			[ID produit], 
			COUNT([ID produit]) AS NombreProduit, 
			SUM(Quantité) AS QuantiteParCommande, 
			SUM([Prix unitaire] * [Quantité]) AS PrixTotal
		FROM [Détails des commandes]
		WHERE [Prix unitaire] > 100
		GROUP BY [ID produit]
		ORDER BY SUM([Prix unitaire] * [Quantité]) DESC;
      


		  
	  

W3schools

Python.org