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