Aller au contenu

UGA - MIASHS - S7 - BDD - Pierre Blarre

Exercices

Icône Présentation
1 / 1

Suite de l’exercice 1

  1. Afficher le total et la moyenne des comptes clients, ainsi que le nombre de clients, selon chacune des classifications suivantes :
1. par catégorie
SELECT
categorie,
COUNT(*) AS 'Nombre de clients',
SUM(compte) AS 'Total des comptes',
AVG(compte) AS 'Moyenne des comptes'
FROM Clients
GROUP BY categorie;
Résultat de la requête :
Moyenne et total des comptes clients par catégorie
categorieNombre de clientsTotal des comptesMoyenne des comptes
1 123094 123094
A1 1 10000 10000
B1 1 3251 3251
B2 2 1903 951.5
C1 3 -4750 -1583.3333333333333
C3 1 -1500 -1500
2. par ville
SELECT
categorie,
COUNT(*) AS 'Nombre de clients',
SUM(compte) AS 'Total des comptes',
AVG(compte) AS 'Moyenne des comptes'
FROM Clients
GROUP BY ville;
Résultat de la requête :
Moyenne et total des comptes clients par ville
categorieNombre de clientsTotal des comptesMoyenne des comptes
B2 1 1903 1903
B2 1 0 0
C1 1 -1000 -1000
A1 1 10000 10000
C3 4 117844 29461
B1 1 3251 3251
3. par catégorie dans chaque ville
SELECT
categorie,
COUNT(*) AS 'Nombre de clients',
SUM(compte) AS 'Total des comptes',
AVG(compte) AS 'Moyenne des comptes'
FROM Clients
GROUP BY ville, categorie;
Résultat de la requête :
Moyenne et total des comptes clients par catégories et par ville
categorieNombre de clientsTotal des comptesMoyenne des comptes
B2 1 1903 1903
B2 1 0 0
C1 1 -1000 -1000
A1 1 10000 10000
1 123094 123094
C1 2 -3750 -1875
C3 1 -1500 -1500
B1 1 3251 3251

Exercice 2

Exprimer les requêtes suivantes en SQL :

1. Combien y a-t-il de commandes spécifiant un (ou plusieurs) produit(s) dont le nom commence par la lettre C ?
SELECT COUNT(*) AS 'Nombre de commandes'
FROM Commandes C
JOIN Details D ON C.numero = D.numeroCommande
JOIN Produits P ON D.numeroProduit = P.numero
WHERE P.nom LIKE 'C%';
Résultat de la requête :
Commandes avec produits commençant par 'C'
Nombre de commandes
5
2. Calculer le montant dû par chaque client. Dans le calcul, on ne prendra en compte que le montant des commandes
SELECT
C.numero AS 'Client',
C.nom AS 'Nom',
SUM(D.quantite * P.prix) AS 'Montant dû'
FROM Clients C
JOIN Commandes Co ON C.numero = Co.numeroClient
JOIN Details D ON Co.numero = D.numeroCommande
JOIN Produits P ON D.numeroProduit = P.numero
GROUP BY C.numero
UNION
SELECT
C.numero AS 'Client',
C.nom AS 'Nom',
0 AS 'Montant dû'
FROM Clients C
WHERE C.numero NOT IN (SELECT numeroClient FROM Commandes);
Résultat de la requête :
Montant dû par chaque client
ClientNomMontant dû
1 Lebreton 350
2 Vasseur 0
3 Da Costa 495
4 Rey 260
5 Weiss 480
6 Berlioz 0
7 Lefevre 0
8 Jacques 0
9 Barda 0
3. Afficher pour chaque ville, les noms des produits qui y sont commandés
SELECT
C.ville AS 'Ville',
P.nom AS 'Produit'
FROM Clients C
JOIN Commandes Co ON C.numero = Co.numeroClient
JOIN Details D ON Co.numero = D.numeroCommande
JOIN Produits P ON D.numeroProduit = P.numero
GROUP BY C.ville, P.nom;
Résultat de la requête :
Produits commandés par ville
VilleProduit
Lille Chaussures
Lille Pantalon
Lille T-shirt
Meylan Casquette
Meylan Chaussures
Meylan Pantalon
Meylan Sac à dos
Meylan T-shirt
Paris Casquette
Paris Chaussures
Paris Pantalon
Paris Sac à dos
Paris T-shirt
Vizille Pantalon
Vizille T-shirt