Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- On se propose d'analyser le nombre d'exercices produits en fonction la localité de l'etablissement,
- -- le niveau, l'année de naissance de l'enseignant et la notion abordée.
- -- Exercice 1
- -- Mesure :
- -- Nombre d'exercice produit
- -- Dimensions :
- -- Localité de l'établissement
- -- Niveau
- -- Année de naissance de l'enseignant
- -- Notion abordée
- -- Exercice 2
- -- GROUP BY Normal
- SELECT et.localite, ex.niveau, p.annee_naissance, n.notion, COUNT(ex.niveau)
- FROM exercice ex, prof p, etablissement et, notion n
- WHERE ex.proprietaire = p.idp
- AND p.rne = et.rne
- AND ex.idex = n.idexo
- GROUP BY et.localite, ex.niveau, p.annee_naissance, n.notion
- -- GROUP BY ROLLUP
- -- reduit les dimensions
- SELECT et.localite, ex.niveau, p.annee_naissance, n.notion, COUNT(ex.niveau)
- FROM exercice ex, prof p, etablissement et, notion n
- WHERE ex.proprietaire = p.idp
- AND p.rne = et.rne
- AND ex.idex = n.idexo
- GROUP BY ROLLUP (et.localite, ex.niveau, p.annee_naissance, n.notion)
- -- GROUP BY CUBE
- -- Donne toute les combinaisons possibles
- SELECT et.localite, ex.niveau, p.annee_naissance, n.notion, COUNT(ex.niveau)
- FROM exercice ex, prof p, etablissement et, notion n
- WHERE ex.proprietaire = p.idp
- AND p.rne = et.rne
- AND ex.idex = n.idexo
- GROUP BY CUBE (et.localite, ex.niveau, p.annee_naissance, n.notion)
- -- GROUP BY GROUPING SETS
- -- Donne la mesure pour une unique dimension
- SELECT et.localite, ex.niveau, p.annee_naissance, n.notion, COUNT(ex.niveau)
- FROM exercice ex, prof p, etablissement et, notion n
- WHERE ex.proprietaire = p.idp
- AND p.rne = et.rne
- AND ex.idex = n.idexo
- GROUP BY GROUPING SETS (et.localite, ex.niveau, p.annee_naissance, n.notion)
- -- DECODE
- SELECT et.localite, ex.niveau, p.annee_naissance, DECODE(n.notion, NULL , 'TOUTE NOTION', n.notion) , COUNT(ex.niveau)
- FROM exercice ex, prof p, etablissement et, notion n
- WHERE ex.proprietaire = p.idp
- AND p.rne = et.rne
- AND ex.idex = n.idexo
- GROUP BY CUBE (et.localite, ex.niveau, p.annee_naissance, n.notion)
- -- 1. Quelle est la densité de votre "cube" ?
- -- Nombre rendu par le GROUP BY : 8
- -- Nombre de localité : 3
- -- Nombre de niveau : 4
- -- Nombre d'année de n : 4
- -- Nombre de notion : 3
- -- densité = 8 / (3*4*4*3) = 0,05555
- -- 2.Fonctions d'analyse :
- -- (a) Utilisez la fonction RANK pour ordonner les cellules du cube
- SELECT et.localite, ex.niveau, p.annee_naissance, DECODE(n.notion, NULL , 'TOUTE NOTION', n.notion) , RANK() OVER (ORDER BY localite)
- FROM exercice ex, prof p, etablissement et, notion n
- WHERE ex.proprietaire = p.idp
- AND p.rne = et.rne
- AND ex.idex = n.idexo
- GROUP BY CUBE (et.localite, ex.niveau, p.annee_naissance, n.notion)
- -- (b) Utilisez la fonctions RATIO_TO_REPORT pour donner, pour chaque élève,
- -- la proportion d'exercices qu'il a passés par rapport à la totalité des exercices pour son niveau.
- -- Dans le OVERer il faudrait mettre le nombre totale d'exercice pour le niveau de l'eleve.
- SELECT el.nom, el.niveau, COUNT(*), RATIO_TO_REPORT(COUNT(*)) OVER(PARTITION BY (el.niveau))
- FROM eleve el, exercice ex, passage pa, niveau ni, contenu co
- WHERE el.IDEL = pa.IDEL
- AND pa.IDD = co.IDD
- AND ex.IDEX = co.IDEX
- AND ex.NIVEAU = ni.NIVEAU
- AND el.NIVEAU = ex.NIVEAU
- GROUP BY (el.nom, el.niveau)
- -- (c) Affichez le nombre d’exercices niveau par niveau en indiquant également le nombre d'exercices cumulés à chaque ligne
- -- (sum(count(x)) pour vous aider).
- --SELECT el.nom, el.niveau, count(*) as "Nombre d'exercice passé", SUM(count(*)) over (partition by el.niveau) as "nb dexercice passé cumulé"
- SELECT exercice.niveau, COUNT(*) AS "Nombre d'exercice", SUM(COUNT(*)) OVER (partition BY exercice.niveau) AS "nb dexercice cumulé"
- FROM exercice
- GROUP BY (niveau)
- -- VI Oracle permet de créer des vues matérialisées :
- -- 1. A quoi cela peut-il servir ?
- -- De gros volumes de données modélisés sous la forme d’un schéma en étoile ou flocon
- -- Cela permet de conserver en mémoire le résultat d'une requête, pour ne pas avoir à la refaire et pouvoir faire des opérations dessus
- -- 2. Créez une vue matérialisée pour stocker les informations nécessaires à notre analyse
- CREATE MATERIALIZED VIEW MA_VUE
- AS
- SELECT el.nom, el.niveau, COUNT(*)
- FROM eleve el, exercice ex, passage pa, niveau ni, contenu co
- WHERE el.IDEL = pa.IDEL
- AND pa.IDD = co.IDD
- AND ex.IDEX = co.IDEX
- AND ex.NIVEAU = ni.NIVEAU
- AND el.NIVEAU = ex.NIVEAU
- GROUP BY (el.nom, el.niveau)
- -- 3. Vous pouvez visualiser si les vues créées ont bien été créée en consultant la table user_mviews.
- -- En particulier, l'attribut STALENESS permet de savoir si la vue est à jour ou non.
- SELECT STALENESS
- FROM user_mviews
- -- Cette requette renvoie "FRESH"
- -- Cela signifie que la vue materialisée est à jour.
- -- 4. Comment gérer les rafraîchissements pour qu'ils s'exécutent une fois par jour ?
- -- Pour que le rafraichissement s'execute tous les jour, il faut executer la commande tous les jours.
- -- 5. Insérez un exercicedans la table EXERCICE et réafficher le contenu de la vue matérialisée.
- INSERT INTO EXERCICE VALUES(12, 'contenu', '3eme', 2, '08/02/2019')
- -- 6. La vue est-elle à jour ? Vous pouvez le confirmer ou l'infirmer à l'aide d'une requête du type
- SELECT STALENESS
- FROM user_mviews
- -- L'etat est à "NEEDS_COMPILE"
- -- Cela signifie que la vue a besoind d'être refresh
- -- 7. Forcez le rafraîchissement à l'aide de dbms_mview.refresh
- -- 8. Les modifications ont-elles été prises en compte ? Affichez le contenu de la vue et les méta-données stockées par Oracle (staleness dans user_mviews).
- -- Oui
- -- VII.Slow Changing Dimensions
- -- 1. Rappelez ce que signifie “Slow Changing Dimensions”
- -- Cela veut dire qu'une dimension peut subir des modifications. On peut alors accéder à l'historique des modifications.
- -- 2. Donnez un exemple dans le cadre des données bibliothèque
- -- Si on change le numéro de telephone d'un abonné on aura accès à son ancien numéro de telephone
- -- 3. Quelles sont les différentes façons de gérer ce phénomène ?
- -- Quels seraient les biais possibles sur les données bibliothèque selon le choix de gestion ?
- -- VIII.ETL
- -- Qu'est-ce qu'un ETL ?
- -- Extract-transform-load
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement