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