Cas 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);
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
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);
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);