Re-représentation de représentants
[30 minutes]
Soit le schéma relationnel suivant :
1
REPRESENTANTS (#NR, NOMR, VILLE)
2
PRODUITS (#NP, NOMP, COUL, PDS)
3
CLIENTS (#NC, NOMC, VILLE)
4
VENTES (#NR=>REPRESENTANTS(NR), #NP=>PRODUITS(NP), #NC=>CLIENTS(NC), QT)
Écrire en SQL les requêtes permettant d'obtenir les informations suivantes.
1
/* Les requêtes peuvent être testées dans un SGBDR, en créant une base de données avec le script SQL suivant */
2
3
/*
4
DROP TABLE VENTES ;
5
DROP TABLE CLIENTS ;
6
DROP TABLE PRODUITS ;
7
DROP TABLE REPRESENTANTS ;
8
*/
9
10
CREATE TABLE REPRESENTANTS (
11
NR INTEGER PRIMARY KEY,
12
NOMR VARCHAR,
13
VILLE VARCHAR
14
);
15
16
CREATE TABLE PRODUITS (
17
NP INTEGER PRIMARY KEY,
18
NOMP VARCHAR,
19
COUL VARCHAR,
20
PDS INTEGER
21
);
22
23
CREATE TABLE CLIENTS (
24
NC INTEGER PRIMARY KEY,
25
NOMC VARCHAR,
26
VILLE VARCHAR
27
);
28
29
CREATE TABLE VENTES (
30
NR INTEGER REFERENCES REPRESENTANTS(NR),
31
NP INTEGER REFERENCES PRODUITS(NP),
32
NC INTEGER REFERENCES CLIENTS(NC),
33
QT INTEGER,
34
PRIMARY KEY (NR, NP, NC)
35
);
36
37
INSERT INTO REPRESENTANTS (NR, NOMR, VILLE) VALUES (1, 'Stephane', 'Lyon');
38
INSERT INTO REPRESENTANTS (NR, NOMR, VILLE) VALUES (2, 'Benjamin', 'Paris');
39
INSERT INTO REPRESENTANTS (NR, NOMR, VILLE) VALUES (3, 'Leonard', 'Lyon');
40
INSERT INTO REPRESENTANTS (NR, NOMR, VILLE) VALUES (4, 'Antoine', 'Brest');
41
INSERT INTO REPRESENTANTS (NR, NOMR, VILLE) VALUES (5, 'Bruno', 'Bayonne');
42
43
INSERT INTO PRODUITS (NP, NOMP, COUL, PDS) VALUES (1, 'Aspirateur', 'Rouge', 3546);
44
INSERT INTO PRODUITS (NP, NOMP, COUL, PDS) VALUES (2, 'Trottinette', 'Bleu', 1423);
45
INSERT INTO PRODUITS (NP, NOMP, COUL, PDS) VALUES (3, 'Chaise', 'Blanc', 3827);
46
INSERT INTO PRODUITS (NP, NOMP, COUL, PDS) VALUES (4, 'Tapis', 'Rouge', 1423);
47
48
INSERT INTO CLIENTS (NC, NOMC, VILLE) VALUES (1, 'Alice', 'Lyon');
49
INSERT INTO CLIENTS (NC, NOMC, VILLE) VALUES (2, 'Bruno', 'Lyon');
50
INSERT INTO CLIENTS (NC, NOMC, VILLE) VALUES (3, 'Charles', 'Compiègne');
51
INSERT INTO CLIENTS (NC, NOMC, VILLE) VALUES (4, 'Denis', 'Montpellier');
52
INSERT INTO CLIENTS (NC, NOMC, VILLE) VALUES (5, 'Emile', 'Strasbourg');
53
54
INSERT INTO VENTES (NR, NP, NC, QT) VALUES (1, 1, 1, 1);
55
INSERT INTO VENTES (NR, NP, NC, QT) VALUES (1, 1, 2, 1);
56
INSERT INTO VENTES (NR, NP, NC, QT) VALUES (2, 2, 3, 1);
57
INSERT INTO VENTES (NR, NP, NC, QT) VALUES (4, 3, 3, 200);
58
INSERT INTO VENTES (NR, NP, NC, QT) VALUES (3, 4, 2, 190);
59
INSERT INTO VENTES (NR, NP, NC, QT) VALUES (1, 3, 2, 300);
60
INSERT INTO VENTES (NR, NP, NC, QT) VALUES (3, 1, 2, 120);
61
INSERT INTO VENTES (NR, NP, NC, QT) VALUES (3, 1, 4, 120);
62
INSERT INTO VENTES (NR, NP, NC, QT) VALUES (3, 4, 4, 2);
63
INSERT INTO VENTES (NR, NP, NC, QT) VALUES (3, 1, 1, 3);
64
INSERT INTO VENTES (NR, NP, NC, QT) VALUES (3, 4, 1, 5);
65
INSERT INTO VENTES (NR, NP, NC, QT) VALUES (3, 1, 3, 1);
Question
Le nombre de clients.
Solution
1
SELECT COUNT(*)
2
FROM CLIENTS ;
ou
1
SELECT COUNT(NC)
2
FROM CLIENTS ;
Question
Le nombre de produits de couleur rouge.
Solution
1
SELECT COUNT(*)
2
FROM PRODUITS P
3
WHERE P.COUL='Rouge' ;
Question
Le nombre de clients par ville.
Solution
1
SELECT VILLE, COUNT(*)
2
FROM CLIENTS
3
GROUP BY VILLE ;
Question
La quantité totale des produits rouge vendus par chaque représentant.
Solution
1
SELECT V.NR, SUM(V.QT)
2
FROM VENTES V, PRODUITS P
3
WHERE P.NP=V.NP
4
AND P.COUL='Rouge'
5
GROUP BY V.NR;
Question
La quantité totale de produits rouges vendus pour chaque représentant ayant vendu plus de 5 fois des produits rouges (ayant réalisé plus de 5 ventes différentes de produits rouges).
Solution
1
SELECT V.NR, SUM(V.QT)
2
FROM VENTES V, PRODUITS P
3
WHERE V.NP=P.NP
4
AND P.COUL='Rouge'
5
GROUP BY V.NR
6
HAVING COUNT(*)>5 ;