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