You are on page 1of 9

use saad_naanaiy;

use g_e_s_c_o_m;
CREATE TABLE IF NOT EXISTS client (
CODECLI VARCHAR(4) PRIMARY KEY,
NOMC VARCHAR(15),
CATC INT,
VLC VARCHAR(25)
)
--@block
SELECT*FROM client

--@block
CREATE TABLE article (
CODEART VARCHAR(4) PRIMARY KEY,
NOMA VARCHAR(30),
COULEUR VARCHAR(15),
PRIXACHAT INT,
PRIXVENTE INT,
QTESTK INT
)

--@block
SELECT*FROM article

--@block
CREATE TABLE commande (
NUMCOM INT PRIMARY KEY,
CODECLI VARCHAR(4),
DATECOM DATE,
FOREIGN KEY (CODECLI) REFERENCES client(CODECLI)
)

--@block
SELECT*FROM commande

--@block
CREATE TABLE detailcom(
NUMCOM int REFERENCES commande(NUMCOM),
CODEART VARCHAR(4) REFERENCES article (CODEART),
QTECOMD int,
PRIMARY KEY (NUMCOM, CODEART)
)

--@block
SELECT*FROM detailcom

--@block
INSERT INTO client
VALUES
('C001', 'MARTIN', 2, 'LONDRES'),
('C002', 'DUPONT', 1, 'PARIS'),
('C003', 'LEBRAVE', 3, 'LONDRES'),
('C004', 'CSIMPLE', 2, 'LONDRES'),
('C005', 'MARTIN', 3, 'NICE'),
('C006', 'LEBON', 1, 'GENEVE'),
('C007', 'DUBIN', 1, 'PARIS');

--@block
INSERT INTO article (CODEART, NOMA, COULEUR, PRIXACHAT, PRIXVENTE, QTESTK)
VALUES
('A100','Jupe','ROUGE','170','289','10'),
('A200','Robe','ROUGE','180','329','15'),
('A300','Robe','BLANCHE','185','339','20'),
('A400','Chemise','BLANCHE','100','199','10'),
('A500','Chemise','ROUGE','100','199','5'),
('A600','Veste','BLEU','245','399','7');

--@block
INSERT INTO commande (NUMCOM, CODECLI, DATECOM)
VALUES
('970817','C003','1997-08-04'),
('970818','C003','1997-08-05'),
('970819','C007','1997-08-20'),
('970920','C005','1997-09-05'),
('970925','C007','1997-09-07'),
('970927','C007','1997-09-17'),
('970930','C001','1997-09-20'),
('971004','C001','1997-10-04');

--@block
INSERT INTO DetailCom (NUMCOM, CODEART, QTECOMD)
VALUES
(970817, 'A100', 1),
(970817, 'A200', 5),
(970817, 'A300', 2),
(970817, 'A500', 2),
(970818, 'A500', 8),
(970818, 'A600', 2),
(970819, 'A100', 3),
(970819, 'A500', 7),
(970819, 'A600', 2),
(970920, 'A200', 7),
(970920, 'A500', 7),
(970920, 'A600', 6),
(970925, 'A500', 1),
(970930, 'A200', 8),
(970930, 'A500', 8),
(971004, 'A100', 3),
(971004, 'A500', 8);

--@block
-- 1
SELECT NOMC FROM client

--@block
-- 2
SELECT CODECLI, CATC FROM client

--@block
-- 3
SELECT CODECLI FROM client WHERE CATC='3'

--@block
-- 4
SELECT CODECLI FROM client WHERE VLC='PARIS'
--@block
-- 5
SELECT CODECLI FROM client WHERE CATC>'3' and VLC='PARIS'

--@block
-- 6
SELECT NUMCOM FROM detailcom WHERE CODEART= 'A400' AND QTECOMD>'4'

--@block
-- 7
SELECT CODECLI, NOMC FROM client WHERE CATC>'2'

--@block
-- 8
SELECT * FROM article WHERE PRIXVENTE = PRIXACHAT*2 OR PRIXVENTE > PRIXACHAT*2

--@block
-- 9
SELECT COULEUR, PRIXVENTE FROM article WHERE COULEUR = 'ROUGE' OR (PRIXVENTE >
PRIXACHAT*2 OR PRIXVENTE = PRIXACHAT*2)

--@block
-- 10
SELECT COULEUR, PRIXVENTE FROM article WHERE COULEUR NOT IN ('ROUGE') OR (PRIXVENTE
> PRIXACHAT*2 OR PRIXVENTE = PRIXACHAT*2)

--@block
-- 10
SELECT COULEUR, PRIXVENTE FROM article WHERE COULEUR <>'ROUGE' AND (PRIXVENTE <
PRIXACHAT*2 OR PRIXVENTE = PRIXACHAT*2)

--@block
-- 11
SELECT COULEUR, PRIXVENTE FROM article WHERE COULEUR= 'ROUGE' AND (PRIXVENTE > 250
OR PRIXVENTE =250) OR COULEUR= 'BLEU'

--@block
-- 12
SELECT PRIXACHAT FROM article WHERE PRIXACHAT BETWEEN 150 AND 200

--@block
-- 13
SELECT COULEUR FROM article WHERE COULEUR IN ('ROUGE','BLANCHE','BLEU')

--@block
-- 14
SELECT COULEUR FROM article WHERE COULEUR NOT IN ('ROUGE','BLANCHE','BLEU')

--@block
-- 15
SELECT NOMC FROM client WHERE NOMC LIKE 'BO%'

--@block
-- 16
SELECT * FROM CLIENT ORDER BY NOMC

--@block
-- 17
SELECT CODEART, PRIXACHAT FROM article WHERE (PRIXACHAT < '200' OR PRIXACHAT =
'200') ORDER BY QTESTK DESC

--@block
-- 18
Select (PRIXVENTE-PRIXACHAT) as marge FROM article

--@block
-- 19
SELECT (PRIXACHAT < '100') as marge FROM article

--@block
-- 20
SELECT (PRIXACHAT < '100') as marge FROM article ORDER BY PRIXACHAT ASC

--@block
-- 21
SELECT AVG(QTESTK) FROM article

--@block
-- 22
SELECT COUNT(DISTINCT COULEUR) FROM article

--@block
-- 23
SELECT MIN(PRIXACHAT) FROM article

--@block
-- 24
SELECT MAX(PRIXVENTE) FROM article

--@block
-- 25
SELECT COUNT(CODEART) FROM article

--@block
-- 26
SELECT AVG(QTESTK), MAX(PRIXVENTE - PRIXACHAT), (MAX(PRIXVENTE) - MAX(PRIXACHAT))
FROM article
WHERE COULEUR = 'ROUGE'

--@block
-- 27
SELECT COULEUR, AVG(PRIXVENTE) AS PRIXVENTEMOYEN
FROM article
GROUP BY COULEUR

--@block
-- 28
SELECT COULEUR, AVG(PRIXVENTE) AS PRIXVENTEMOYEN
FROM article
GROUP BY COULEUR
ORDER BY COULEUR

--@block
-- 29
SELECT
COULEUR,
AVG(PRIXVENTE) AS AVG_PRIX_VENTE
FROM
article
WHERE
PRIXACHAT >= 150
GROUP BY
COULEUR
ORDER BY
COULEUR

--@block
-- 30
SELECT CATC, COUNT(CODECLI) AS Total_Code_cli
FROM client
GROUP BY CATC

--@block
-- 31
SELECT CODEART, NOMA FROM article WHERE QTESTK > (SELECT AVG(QTESTK) FROM article)

--@block
-- 32
SELECT COULEUR FROM article WHERE '200' < (SELECT AVG(PRIXVENTE))

--@block
-- 33
SELECT
c.CODECLI,
c.NOMC,
COALESCE(SUM(a.PRIXVENTE * dc.QTECOMD), 0) AS CHIFFRE_AFFAIRE
FROM
client c
LEFT JOIN
commande cmd ON c.CODECLI = cmd.CODECLI
LEFT JOIN
detailcom dc ON cmd.NUMCOM = dc.NUMCOM
LEFT JOIN
article a ON dc.CODEART = a.CODEART
GROUP BY
c.CODECLI, c.NOMC

--@block
-- 34
SELECT
a.CODEART,
a.NOMA,
SUM(dc.QTECOMD) AS TOTAL_QUANTITE_COMMANDES
FROM
article a
JOIN
detailcom dc ON a.CODEART = dc.CODEART
GROUP BY
a.CODEART, a.NOMA

--@block
-- 35
SELECT
c.CODECLI,
c.NOMC,
EXTRACT(MONTH FROM cmd.DATECOM) AS MONTH,
SUM(a.PRIXVENTE * dc.QTECOMD) AS CHIFFRE_AFFAIRE_PAR_MOIS
FROM
client c
JOIN
commande cmd ON c.CODECLI = cmd.CODECLI
JOIN
detailcom dc ON cmd.NUMCOM = dc.NUMCOM
JOIN
article a ON dc.CODEART = a.CODEART
GROUP BY
c.CODECLI, c.NOMC, EXTRACT(MONTH FROM cmd.DATECOM)

--@block
-- 36
SELECT DISTINCT c.CODECLI
FROM client c
WHERE c.CODECLI NOT IN (
SELECT cmd.CODECLI
FROM commande cmd
WHERE EXTRACT(MONTH FROM cmd.DATECOM) = 9 AND EXTRACT(YEAR FROM cmd.DATECOM) =
1997
)

--@block
-- 37
SELECT DISTINCT c.CODECLI
FROM client c
WHERE c.CODECLI IN (
SELECT cmd.CODECLI
FROM commande cmd
WHERE EXTRACT(MONTH FROM cmd.DATECOM) = 9 AND EXTRACT(YEAR FROM cmd.DATECOM) =
1997
)
AND c.CODECLI NOT IN (
SELECT cmd.CODECLI
FROM commande cmd
WHERE EXTRACT(MONTH FROM cmd.DATECOM) <> 9 OR EXTRACT(YEAR FROM cmd.DATECOM) <>
1997
)

--@block
-- 38
SELECT DISTINCT a.CODEART
FROM article a
WHERE a.CODEART NOT IN (
SELECT dc.CODEART
FROM detailcom dc
JOIN commande cmd ON dc.NUMCOM = cmd.NUMCOM
WHERE cmd.DATECOM = '1997-11-20'
)

--@block
-- 39
SELECT DISTINCT c.CODECLI
FROM client c
JOIN commande cmd ON c.CODECLI = cmd.CODECLI
WHERE EXTRACT(MONTH FROM cmd.DATECOM) IN (8, 9) AND EXTRACT(YEAR FROM cmd.DATECOM)
= 1997
GROUP BY c.CODECLI
HAVING COUNT(DISTINCT EXTRACT(MONTH FROM cmd.DATECOM)) = 2

--@block
-- 40
SELECT DISTINCT c.CODECLI, c.NOMC
FROM client c
LEFT JOIN commande cmd ON c.CODECLI = cmd.CODECLI
WHERE VLC = 'Paris' OR EXTRACT(MONTH FROM cmd.DATECOM) = 9

--@block
-- 41
SELECT c.CODECLI, c.NOMC
FROM client c
JOIN commande cmd ON c.CODECLI = cmd.CODECLI
GROUP BY c.CODECLI, c.NOMC
HAVING COUNT(cmd.NUMCOM) = 1

--@block
-- 42
SELECT c.CODECLI, c.NOMC
FROM client c
JOIN commande cmd ON c.CODECLI = cmd.CODECLI
WHERE cmd.NUMCOM = 971120

--@block
-- 43
SELECT DISTINCT c.CODECLI, c.NOMC
FROM client c
JOIN commande cmd ON c.CODECLI = cmd.CODECLI
WHERE EXTRACT(MONTH FROM cmd.DATECOM) = 8 AND EXTRACT(YEAR FROM cmd.DATECOM) = 1997

--@block
-- 44
SELECT DISTINCT a.CODEART, a.NOMA
FROM article a
JOIN detailcom dc ON a.CODEART = dc.CODEART
JOIN commande cmd ON dc.NUMCOM = cmd.NUMCOM
JOIN client c ON cmd.CODECLI = c.CODECLI
WHERE VLC = 'Paris'

--@block
-- 45
SELECT DISTINCT c.CODECLI, c.NOMC
FROM client c
JOIN commande cmd ON c.CODECLI = cmd.CODECLI
WHERE EXTRACT(MONTH FROM cmd.DATECOM) IN (8, 9) AND EXTRACT(YEAR FROM cmd.DATECOM)
= 1997
GROUP BY c.CODECLI, c.NOMC
HAVING COUNT(DISTINCT EXTRACT(MONTH FROM cmd.DATECOM)) = 2

--@block
-- 46
SELECT *
FROM article
WHERE PRIXVENTE > (SELECT PRIXVENTE FROM article WHERE CODEART = 'A100')

--@block
-- 47
SELECT *
FROM article
WHERE PRIXACHAT > (SELECT PRIXACHAT FROM article WHERE CODEART = 'A600')
ORDER BY PRIXACHAT

--@block
-- 48
SELECT *
FROM article
WHERE COULEUR = (SELECT COULEUR FROM article WHERE CODEART = 'A100')
AND PRIXVENTE >= (SELECT AVG(PRIXVENTE))

--@block
-- 49
SELECT *
FROM article
WHERE PRIXVENTE > (SELECT MIN(PRIXVENTE) FROM article WHERE COULEUR = 'BLANCHE' )

--@block
-- 50
SELECT dc.CODEART
FROM detailcom dc
JOIN commande cmd ON dc.NUMCOM = cmd.NUMCOM
GROUP BY dc.CODEART
HAVING COUNT(DISTINCT cmd.NUMCOM) = (SELECT COUNT(DISTINCT NUMCOM) FROM commande);

@block
-- 51
SELECT dc.CODEART
FROM detailcom dc
JOIN commande cmd ON dc.NUMCOM = cmd.NUMCOM
JOIN client c ON cmd.CODECLI = c.CODECLI
WHERE c.VLC = 'Paris'
GROUP BY dc.CODEART
HAVING COUNT(DISTINCT c.CODECLI) = (SELECT COUNT(DISTINCT CODECLI) FROM client
WHERE VLC = 'Paris');

--@block
-- 52
SELECT c.CODECLI
FROM client c
JOIN commande cmd ON c.CODECLI = cmd.CODECLI
JOIN detailcom dc ON cmd.NUMCOM = dc.NUMCOM
JOIN article a ON dc.CODEART = a.CODEART
WHERE a.COULEUR = 'rouge'
GROUP BY c.CODECLI
HAVING COUNT(DISTINCT a.CODEART) = (SELECT COUNT(DISTINCT CODEART) FROM article
WHERE COULEUR = 'rouge')

--@block
-- 53
SELECT c.CODECLI, c.NOMC
FROM client c
JOIN commande cmd ON c.CODECLI = cmd.CODECLI
JOIN detailcom dc ON cmd.NUMCOM = dc.NUMCOM
JOIN article a ON dc.CODEART = a.CODEART
WHERE a.COULEUR = 'rouge'
GROUP BY c.CODECLI, c.NOMC
HAVING COUNT(DISTINCT a.CODEART) = (SELECT COUNT(DISTINCT CODEART) FROM article
WHERE COULEUR = 'rouge')

You might also like