Cas Fantastic : Fonctions Oracle

Question

Écrivez une requête permettant d'obtenir le top 100 des meilleurs livres (les best-sellers).

Solution

1
SELECT * FROM
2
(
3
SELECT RANK() OVER (ORDER BY count(*) DESC) AS rank, count(*) AS ventes, p.isbn AS isbn, p.titre AS titre
4
FROM f_dw_ventes v, f_dw_produit p
5
WHERE p.isbn=v.pro
6
GROUP BY p.isbn, p.titre
7
)
8
WHERE rank <= 100;
Remarque

Si l'on dispose d'une vue avec l'attribut d'agrégation de fait best-seller, l'utiliser de préférence à la solution précédente.

Question

Créer une vue permettant de voir la quantité vendue par semaine au format CSV : sem;q.

Exporter le résultat dans un fichier CSV.

Solution

Création de la vue
1
CREATE OR REPLACE VIEW dw_ventesParSem AS
2
SELECT d.sem || ';' || COUNT(*) AS ventesParSem
3
FROM f_dw_ventes v, f_dw_date d
4
WHERE v.dat=d.dat
5
GROUP BY d.sem
6
ORDER BY d.sem;
Script d'export CSV
1
SET echo off
2
SET termout off
3
SET feedback off
4
SET heading off
5
SET PAGESIZE 0
6
SPOOL /tmp/ventesParSem.csv
7
SELECT * FROM dw_ventesParSem;
8
SPOOL off
Appel du script
1
@/projects/fantastic/exports/dw_ventesParSemCsv.sql
Aperçu du fichier créé
1
1;9113
2
2;9044
3
3;9241
4
4;9026
5
5;8899
6
6;8985
7
7;9081
8
8;9208
9
9;9004
10
10;8993
11
...