Cas Fantastic : Fonctions Oracle
Question
Écrivez une requête permettant d'obtenir le top 100 des meilleurs livres (les best-sellers).
Solution
CTRL+C pour copier, CTRL+V pour coller
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;
SELECT * FROM ( SELECT RANK() OVER (ORDER BY count(*) DESC) AS rank, count(*) AS ventes, p.isbn AS isbn, p.titre AS titre FROM f_dw_ventes v, f_dw_produit p WHERE p.isbn=v.pro GROUP BY p.isbn, p.titre ) 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
CTRL+C pour copier, CTRL+V pour coller
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;
CREATE OR REPLACE VIEW dw_ventesParSem AS SELECT d.sem || ';' || COUNT(*) AS ventesParSem FROM f_dw_ventes v, f_dw_date d WHERE v.dat=d.dat GROUP BY d.sem ORDER BY d.sem;
Script d'export CSV
CTRL+C pour copier, CTRL+V pour coller
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
SET echo off SET termout off SET feedback off SET heading off SET PAGESIZE 0 SPOOL /tmp/ventesParSem.csv SELECT * FROM dw_ventesParSem; SPOOL off