Projet Fantastic : Exploitation multi-dimensionnelle de données
Question
Effectuez une requête multi-niveaux permettant de calculer les ventes sur la hiérarchie date-mois-trimestre.
Solution
Requête
SELECT d.dat, d.tri, d.mon, count(*)
FROM f_dw_ventes v, f_dw_date d
WHERE v.dat=d.dat
GROUP BY ROLLUP (d.tri, d.mon, d.dat);
SELECT d.dat, d.tri, d.mon, count(*) FROM f_dw_ventes v, f_dw_date d WHERE v.dat=d.dat GROUP BY ROLLUP (d.tri, d.mon, d.dat);
Résultat (extrait)
01-JAN-13 1 1 1338
02-JAN-13 1 1 1340
03-JAN-13 1 1 1427
04-JAN-13 1 1 1325
05-JAN-13 1 1 3683
08-JAN-13 1 1 1262
09-JAN-13 1 1 1394
10-JAN-13 1 1 1507
11-JAN-13 1 1 1368
12-JAN-13 1 1 3513
15-JAN-13 1 1 1316
16-JAN-13 1 1 1322
17-JAN-13 1 1 1605
18-JAN-13 1 1 1247
19-JAN-13 1 1 3751
22-JAN-13 1 1 1418
23-JAN-13 1 1 1409
24-JAN-13 1 1 1346
25-JAN-13 1 1 1492
26-JAN-13 1 1 3361
29-JAN-13 1 1 1371
30-JAN-13 1 1 1322
31-JAN-13 1 1 1360
1 1 40477
01-FEB-13 1 2 1499
02-FEB-13 1 2 3347
05-FEB-13 1 2 1658
06-FEB-13 1 2 1318
07-FEB-13 1 2 1230
08-FEB-13 1 2 1461
09-FEB-13 1 2 3318
12-FEB-13 1 2 1515
13-FEB-13 1 2 1349
14-FEB-13 1 2 1307
15-FEB-13 1 2 1379
16-FEB-13 1 2 3531
19-FEB-13 1 2 1374
20-FEB-13 1 2 1566
21-FEB-13 1 2 1414
22-FEB-13 1 2 1311
23-FEB-13 1 2 3543
26-FEB-13 1 2 1357
27-FEB-13 1 2 1622
28-FEB-13 1 2 1270
1 2 36369
01-MAR-13 1 3 1300
02-MAR-13 1 3 3455
05-MAR-13 1 3 1240
...
29-NOV-13 4 11 1372
30-NOV-13 4 11 3489
4 11 41269
03-DEC-13 4 12 2311
04-DEC-13 4 12 2245
05-DEC-13 4 12 2278
06-DEC-13 4 12 2079
07-DEC-13 4 12 5091
10-DEC-13 4 12 2246
11-DEC-13 4 12 2287
12-DEC-13 4 12 2341
13-DEC-13 4 12 2217
14-DEC-13 4 12 5184
17-DEC-13 4 12 2086
18-DEC-13 4 12 2081
19-DEC-13 4 12 2251
20-DEC-13 4 12 2290
21-DEC-13 4 12 5073
24-DEC-13 4 12 4001
25-DEC-13 4 12 2128
26-DEC-13 4 12 844
27-DEC-13 4 12 782
28-DEC-13 4 12 2542
31-DEC-13 4 12 887
4 12 53244
4 135106
492113
01-JAN-13 1 1 1338 02-JAN-13 1 1 1340 03-JAN-13 1 1 1427 04-JAN-13 1 1 1325 05-JAN-13 1 1 3683 08-JAN-13 1 1 1262 09-JAN-13 1 1 1394 10-JAN-13 1 1 1507 11-JAN-13 1 1 1368 12-JAN-13 1 1 3513 15-JAN-13 1 1 1316 16-JAN-13 1 1 1322 17-JAN-13 1 1 1605 18-JAN-13 1 1 1247 19-JAN-13 1 1 3751 22-JAN-13 1 1 1418 23-JAN-13 1 1 1409 24-JAN-13 1 1 1346 25-JAN-13 1 1 1492 26-JAN-13 1 1 3361 29-JAN-13 1 1 1371 30-JAN-13 1 1 1322 31-JAN-13 1 1 1360 1 1 40477 01-FEB-13 1 2 1499 02-FEB-13 1 2 3347 05-FEB-13 1 2 1658 06-FEB-13 1 2 1318 07-FEB-13 1 2 1230 08-FEB-13 1 2 1461 09-FEB-13 1 2 3318 12-FEB-13 1 2 1515 13-FEB-13 1 2 1349 14-FEB-13 1 2 1307 15-FEB-13 1 2 1379 16-FEB-13 1 2 3531 19-FEB-13 1 2 1374 20-FEB-13 1 2 1566 21-FEB-13 1 2 1414 22-FEB-13 1 2 1311 23-FEB-13 1 2 3543 26-FEB-13 1 2 1357 27-FEB-13 1 2 1622 28-FEB-13 1 2 1270 1 2 36369 01-MAR-13 1 3 1300 02-MAR-13 1 3 3455 05-MAR-13 1 3 1240 ... 29-NOV-13 4 11 1372 30-NOV-13 4 11 3489 4 11 41269 03-DEC-13 4 12 2311 04-DEC-13 4 12 2245 05-DEC-13 4 12 2278 06-DEC-13 4 12 2079 07-DEC-13 4 12 5091 10-DEC-13 4 12 2246 11-DEC-13 4 12 2287 12-DEC-13 4 12 2341 13-DEC-13 4 12 2217 14-DEC-13 4 12 5184 17-DEC-13 4 12 2086 18-DEC-13 4 12 2081 19-DEC-13 4 12 2251 20-DEC-13 4 12 2290 21-DEC-13 4 12 5073 24-DEC-13 4 12 4001 25-DEC-13 4 12 2128 26-DEC-13 4 12 844 27-DEC-13 4 12 782 28-DEC-13 4 12 2542 31-DEC-13 4 12 887 4 12 53244 4 135106 492113
Question
Étudiez l'éventuelle influence des magasins (certains sont-ils plus performants ?) et de l'implantation dans les départements (certains sont-ils plus propices ?).
Indice
Afin de ne pas être dépendant de l'organisation des magasins, effectuez la requête uniquement pour les magasins de type 'A' avec rayon BS (ce sont à la fois les magasins les plus nombreux et les plus performants).
Solution
SELECT m.dpt, m.mag, count(*)
FROM f_dw_ventes v, f_dw_mag m
WHERE v.mag=m.mag AND m.ray = 'Author' AND m.bs = '1'
GROUP BY ROLLUP (m.dpt, m.mag);
SELECT m.dpt, m.mag, count(*) FROM f_dw_ventes v, f_dw_mag m WHERE v.mag=m.mag AND m.ray = 'Author' AND m.bs = '1' GROUP BY ROLLUP (m.dpt, m.mag);
13 M106 4680
13 M3 4815
13 M54 4634
13 M68 4599
13 18728
18 M50 4592
18 4592
22 M2 4797
22 4797
28 M144 4313
28 M21 4933
28 M92 4653
28 13899
30 M29 4596
...
92 M138 4573
92 M80 4915
92 14247
95 M148 4759
95 M28 4771
95 M34 4824
95 M37 4867
95 M40 4795
95 M70 4707
95 M81 4767
95 33490
281153
13 M106 4680 13 M3 4815 13 M54 4634 13 M68 4599 13 18728 18 M50 4592 18 4592 22 M2 4797 22 4797 28 M144 4313 28 M21 4933 28 M92 4653 28 13899 30 M29 4596 ... 92 M138 4573 92 M80 4915 92 14247 95 M148 4759 95 M28 4771 95 M34 4824 95 M37 4867 95 M40 4795 95 M70 4707 95 M81 4767 95 33490 281153
On observe que les magasins sont assez homogènes, et également les département si on les ramène au nombre de magasins qu'ils contiennent.
Question
Effectuer une requête multi-dimensionnelle permettant de regarder si les magasins avec un rayon best-sellers vendent plus de livres best-sellers ou non.
On peut utiliser un tableur pour finaliser les analyses de ratio sur les valeurs renvoyées par la requête CUBE obtenue.
Solution
SELECT b.bs || ';' || m.bs || ';' || count(*) || ';'
FROM f_dw_ventes v, f_dw_produit p, f_dw_bs b, f_dw_mag m
WHERE v.pro=p.isbn AND p.isbn=b.isbn AND v.mag=m.mag
GROUP BY CUBE (b.bs, m.bs);
SELECT b.bs || ';' || m.bs || ';' || count(*) || ';' FROM f_dw_ventes v, f_dw_produit p, f_dw_bs b, f_dw_mag m WHERE v.pro=p.isbn AND p.isbn=b.isbn AND v.mag=m.mag GROUP BY CUBE (b.bs, m.bs);
