1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
CREATE TABLE T_ARTICLE_ART
(ART_ID INT NOT NULL PRIMARY KEY,
ART_LIBELLE VARCHAR(16),
ART_CATEGORIE VARCHAR(16))
INSERT INTO T_ARTICLE_ART VALUES (1, 'TV', 'Electroménager')
INSERT INTO T_ARTICLE_ART VALUES (2, 'FRIGO', 'Electroménager')
INSERT INTO T_ARTICLE_ART VALUES (5, 'LAVELINGE', 'Electroménager')
INSERT INTO T_ARTICLE_ART VALUES (3, 'Saumon', 'Poisson')
INSERT INTO T_ARTICLE_ART VALUES (4, 'Truite', 'Poisson')
CREATE TABLE T_VENTE_VTE
(VTE_ID INT NOT NULL PRIMARY KEY,
ART_ID INT NOT NULL FOREIGN KEY REFERENCES T_ARTICLE_ART (ART_ID ),
VTE_QUANTITE FLOAT)
INSERT INTO T_VENTE_VTE VALUES (1, 1, 43)
INSERT INTO T_VENTE_VTE VALUES (2, 3, 21)
INSERT INTO T_VENTE_VTE VALUES (3, 2, 43)
INSERT INTO T_VENTE_VTE VALUES (4, 4, 21)
INSERT INTO T_VENTE_VTE VALUES (5, 1, 22)
INSERT INTO T_VENTE_VTE VALUES (6, 3, 33)
INSERT INTO T_VENTE_VTE VALUES (7, 2, 5)
INSERT INTO T_VENTE_VTE VALUES (8, 4, 2)
INSERT INTO T_VENTE_VTE VALUES (9, 5, 12)
SELECT *
FROM
(
SELECT *, ROW_NUMBER() OVER(PARTITION BY ART_CATEGORIE ORDER BY TOTAL_VENTE) AS NUM,
COUNT(*) OVER(PARTITION BY ART_CATEGORIE) AS NOMBRE
FROM
(
SELECT A.ART_ID, ART_LIBELLE, ART_CATEGORIE,
SUM(VTE_QUANTITE) AS TOTAL_VENTE
FROM T_ARTICLE_ART A
INNER JOIN T_VENTE_VTE V
ON A.ART_ID = V.ART_ID
GROUP BY A.ART_ID, ART_LIBELLE, ART_CATEGORIE
) AS T
) AS TT
WHERE NUM >= CASE
WHEN NUM % 2 = 1 THEN (NOMBRE / 2) + 1
ELSE (NOMBRE / 2)
END
AND NUM <= CASE
WHEN NUM % 2 = 1 THEN (NOMBRE / 2) + 1
ELSE (NOMBRE / 2) + 1
END |
Partager