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 sur les requêtes sélection avec des conditions

Travaux dirigés 6

			##Auteur : Enseignant
			##École : Collège Marie Victorin 
			##Session : Hiver 2026
			##Titre du cours : Introduction aux bases de données
			##Titre du programme : Travaux dirigés 6
			##Version : 1.0
			##Date : 00/00/2026
			##Langage et version : SQL 
			##Moteur : SQL Server Express
		
			-- Les requêtes sélection dans le langage SQL

			-- Objectif : 
			-- Ce travail dirigé portera sur la création de requêtes sélection Avec les clauses DISTINCT, GROUP BY et TOP n
			-- ============================================================================================================

			-- ***************************************************************************
			-- Vérifications à faire systématiquement AVANT d'écrire les requêtes
			-- Vérifier la structure de la table à utiliser, c'est à dire :
			--		Le nom de la table
			--		Le nom des colonnes
			--		Le type des colonnes
			--		Les données contenues dans la table

			-- Base de données à utiliser : Xtremefr

			-- ***************************************************************************

			-- ---------
			-- Requête 1
			-- Table : Produits
			-- Écrire une requête qui affiche la liste des produits vendus par la compagnie Xtreme.
			-- On affichera les colonnes suivantes : 
			-- No du produit
			-- Le nom du produit
			-- La taille du produit
			-- Le prix du produit
			-- Le o du type du produit
			-- La classe du produit

			-- Votre code ici
			SELECT [ID produit]
				,[Nom du produit]
				,[Couleur]
				,[Taille]
				,[Prix conseillé]
				,[ID type de produit]
				,[Classe du produit]
			FROM [dbo].[Produits]				
		
			-- ---------
			-- Requête 2
			-- Table : Produits
			-- Écrire une requête qui affiche les classes de produits de la compagnie Xtreme.

			-- Votre code ici
			SELECT 
				[Classe du produit]
			FROM [dbo].[Produits]
		
			-- ---------
			-- Requête 3
			-- Table : Produits
			-- Écrire une requête qui affiche les classes de produits uniques de la compagnie Xtreme. A l'affichage, la classe de produit doit apparaitre sans doublons.

			-- Votre code ici
			SELECT DISTINCT
				[Classe du produit]
			FROM [dbo].[Produits]
		
			-- ---------
			-- Requête 4
			-- Table : Produits
			-- Écrire une requête qui affiche les types de produits de la compagnies Xtreme.

			-- Votre code ici
			SELECT 
				[ID type de produit]
			FROM [dbo].[Produits]
		
			-- ----------
			-- Requête 5
			-- Table : Produits
			-- Modifier la requête précédente pour afficher les types de produits uniques de la compagnie Xtreme. A l'affichage, le type de produit doit apparaitre sans doublons.

			-- Votre code ici
			SELECT DISTINCT
				[ID type de produit]
			FROM [dbo].[Produits]
		
			-- ----------
			-- Requête 6
			-- Table : Produits
			-- Modifier la requête précédente pour compter le nombre de types de produits distincts de la compagnie Xtreme. A l'affichage, on doit voir une ligne avec un chiffre.

			-- Votre code ici
			SELECT COUNT(DISTINCT [ID type de produit])
			FROM [dbo].[Produits]
		
			-- ----------
			-- Requête 7
			-- Table : Produits
			-- Écrire une requête qui affiche les produits uniques vendus par Xtreme. Le nom du produit ne doit s'afficher qu'une seule fois.

			-- Votre code ici
			SELECT DISTINCT
				[Nom du produit]
			FROM [dbo].[Produits]
		
			-- ----------
			-- Requête 8
			-- Table : Produits
			-- Écrire une requête qui affiche les différents produits vendus par la compagnie Xtreme. Le nom du produit ne doit s'afficher qu'une seule fois.

			-- Votre code ici
			SELECT 
				[Nom du produit]
			FROM [dbo].[Produits]
			GROUP BY [Nom du produit];

			-- Nombre total de produits distincts
			SELECT COUNT(DISTINCT [Nom du produit]) AS NombreDeProduits
			FROM tblProduits;
		
			-- ----------
			-- Requête 9
			-- Table : Produits
			-- Modifier la requête précédente pour afficher le nombre de variétés de chaque produit

			-- Votre code ici
			SELECT 
				[Nom du produit],
				COUNT ([ID produit])	
			FROM [dbo].[Produits]
			GROUP BY [Nom du produit];

		
			-- ----------
			-- Requête 10
			-- Table : Employés
			-- Écrire une requête qui affiche les postes occupés par les employés.

			-- Votre code ici
			SELECT
				[Poste occupé]
			FROM [dbo].[Employés];
		
			-- ----------
			-- Requête 11
			-- Table : Employés
			-- Écrire une requête qui affiche les différents postes occupés par les employés. Le poste occupé doit être unique (S'afficher une seule fois).
			-- Suppression des doublons : La clause DISTINCT permet de supprimer les doublons

			-- Votre code ici
			SELECT DISTINCT 
				[Poste occupé]
			FROM [dbo].[Employés];		
		
			-- ----------
			-- Requête 12
			-- Table : Employés
			-- Écrire une requête qui affiche le nombre d'employés qui occupe chaque poste.
			-- On affichera :
			-- Le nom du poste
			-- Le nombre d'employés dans le poste

			-- Votre code ici
			SELECT  
				[Poste occupé],
				COUNT([ID employé])
			FROM [dbo].[Employés]
			GROUP BY [Poste occupé];
		
			-- ----------
			-- Requête 13
			-- 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 est le plus élevé en premier.
			-- On affichera les colonnes suivanates :
			-- •	L’ID du client
			-- •	Le nombre de commandes
			-- •	Le total de 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 14
			-- Table : Commandes
			-- Écrire une requête qui affiche le nombre de commandes et le montant total des commandes traités par chaque employé
			-- On affichera les colonnes suivanates :
			-- •	l'ID de l'employé
			-- •	Le nombre de commandes
			-- •	Le chiffre d'affaires réalisé
			-- •	La plus petite commande traitée
			-- •	Le plus grosse commande traitée

			-- Votre code ici
			SELECT 
				[ID employé], 
				COUNT([ID commande]) AS NombreCommandes, 
				SUM([Montant commande]) AS ChiffreAffaires,
				MIN([Montant commande]) AS PlusPetiteCommande,
				MAX([Montant commande]) AS PlusGrosseCommande
			FROM [dbo].[Commandes]
			GROUP BY [ID employé]
			ORDER BY SUM([Montant commande]) DESC;				
		
			-- Requête 15
			-- 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 16

			-- É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
			-- •	Le montant moyen des commandes

			-- Votre code ici
			SELECT
				[Transporteur],
				COUNT([ID commande]) NombreCommandeParFournisseur,
				AVG([Montant commande]) MoyenneCommandes
			FROM [dbo].[Commandes]
			WHERE [Date d'expédition] > [Date de besoin]
			GROUP BY [Transporteur]
			ORDER BY Transporteur;	
		
			-- Requête 17

			-- Écrire une requête qui affiche le nombre d'employés par pays de résidence
			-- On affichera les colonnes suivantes :
			-- •	Le pays de résidence
			-- •	Le nombre d'employés


			-- Votre code ici
			SELECT 
				[Pays], 
				COUNT([ID employé]) AS NombreEmploye	
			FROM [dbo].[Adresses des employés]
			GROUP BY [Pays];
		
			-- Requête 18
			-- 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 numéro de la commande
			-- •	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 19
			-- 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