Suite de l’exercice 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;
Moyenne et total des comptes clients par catégorie | |||
---|---|---|---|
categorie | Nombre de clients | Total des comptes | Moyenne 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;
Moyenne et total des comptes clients par ville | |||
---|---|---|---|
categorie | Nombre de clients | Total des comptes | Moyenne 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;
Moyenne et total des comptes clients par catégories et par ville | |||
---|---|---|---|
categorie | Nombre de clients | Total des comptes | Moyenne 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 CJOIN Details D ON C.numero = D.numeroCommandeJOIN Produits P ON D.numeroProduit = P.numeroWHERE P.nom LIKE 'C%';
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 CJOIN Commandes Co ON C.numero = Co.numeroClientJOIN Details D ON Co.numero = D.numeroCommandeJOIN Produits P ON D.numeroProduit = P.numeroGROUP BY C.numero
UNION
SELECT C.numero AS 'Client', C.nom AS 'Nom', 0 AS 'Montant dû'FROM Clients CWHERE C.numero NOT IN (SELECT numeroClient FROM Commandes);
Montant dû par chaque client | ||
---|---|---|
Client | Nom | Montant 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 CJOIN Commandes Co ON C.numero = Co.numeroClientJOIN Details D ON Co.numero = D.numeroCommandeJOIN Produits P ON D.numeroProduit = P.numeroGROUP BY C.ville, P.nom;
Produits commandés par ville | |
---|---|
Ville | Produit |
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 |