mon master2 ISIFAR

ISIFAR
 
AccueilFAQRechercherS'enregistrerMembresGroupesConnexion

Partagez | 
 

 TP2

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Admin
Admin


Nombre de messages : 418
Date d'inscription : 27/09/2005

MessageSujet: TP2   Jeu 16 Mar à 12:48

Code:

***********************
vues materialisees
***********************
DROP TABLE Fait_Vente;
DROP TABLE Magasin;
DROP TABLE Produit;
DROP TABLE DateVente;
DROP MATERIALIZED VIEW MV1;


SET TIMING ON  -- pour afficher le tps d'execution


CREATE TABLE Produit(
  id_prod NUMBER,
  marque  VARCHAR2(10),
  modele  VARCHAR2(10),
  type    VARCHAR2(10),
  PRIMARY KEY (id_prod )
);


CREATE TABLE Magasin(
  id_mag        NUMBER,
  raison_sociale VARCHAR2(20),
  ville          VARCHAR2(10),
  PRIMARY KEY (id_mag )
);


CREATE TABLE DateVente(
  id_date    NUMBER,
  date_vente DATE,
  PRIMARY KEY (id_date )
);


CREATE TABLE Fait_vente(
  id_prod NUMBER REFERENCES Produit(id_prod),
  id_mag  NUMBER REFERENCES Magasin(id_mag),
  id_date NUMBER REFERENCES DateVente(id_date),
  prix NUMBER(6)--,
  --PRIMARY KEY (id_prod, id_mag, id_date)
);



--Insertion dans Produit
INSERT INTO PRODUIT VALUES (1,'renault' ,'clio'    ,'petite');
INSERT INTO PRODUIT VALUES (2,'renault' ,'R19'      ,'familiale');
INSERT INTO PRODUIT VALUES (3,'peugeot' ,'206'      ,'petite');
INSERT INTO PRODUIT VALUES (4,'mercedes','classe E' ,'berline');

--Insertion dans Magasin
INSERT INTO MAGASIN VALUES (100,'AAA','Paris');
INSERT INTO MAGASIN VALUES (101,'BBB','Paris');
INSERT INTO MAGASIN VALUES (102,'CCC','Marseille');

--Insertion dans DateVente
INSERT INTO DateVente VALUES (997,'29/03/05');
INSERT INTO DateVente VALUES (998,'06/12/05');
INSERT INTO DateVente VALUES (999,'06/01/06');

--Insertion dans Fait_Vente
INSERT INTO Fait_vente VALUES (1,100,997,12000);
INSERT INTO Fait_vente VALUES (1,100,998,11000);
INSERT INTO Fait_vente VALUES (2,100,997,8500);
INSERT INTO Fait_vente VALUES (3,101,999,10000);
INSERT INTO Fait_vente VALUES (1,101,999,15000);
INSERT INTO Fait_vente VALUES (4,102,999,30000);
INSERT INTO Fait_vente VALUES (4,102,998,25000);
INSERT INTO Fait_vente VALUES (4,102,999,31000);
INSERT INTO Fait_vente VALUES (1,100,998,25000);


***************************************
***************************************

/*nbre de ventes par produit*/
SELECT COUNT(P.id_prod) AS Nb, P.marque, P.modele
FROM  Fait_Vente F, Produit P
WHERE  F.id_prod=P.id_prod
GROUP BY (P.marque, P.modele);

/*nbre de ventes par ville*/
SELECT COUNT(M.id_mag) AS Nb, M.ville
FROM  Fait_Vente F, Magasin M
WHERE  F.id_mag=M.id_mag
GROUP BY (M.ville);


/*nbre de ventes par mois*/
  /*ajout d'une colonne mois*/
  ALTER TABLE DateVente ADD
  (
    mois VARCHAR2(10)
  ) ;
  /*on recupere le mois a partir de la date deja passee*/
  update DateVente
    set mois=to_char(date_vente,'MM');

SELECT COUNT(D.id_date) AS Nb, D.mois
FROM  Fait_Vente F, DateVente D
WHERE  F.id_date=D.id_date
GROUP BY (D.mois);




***************************************
***************************************
/*prix moyen par produit*/
SELECT P.marque, P.modele, AVG(F.prix) as prix_moyen
FROM  Fait_vente F, Produit P
WHERE  F.id_prod=P.id_prod
GROUP BY (P.marque, P.modele);

/*prix moyen par ville*/
SELECT M.ville, AVG(F.prix) as prix_moyen
FROM  Fait_Vente F, Magasin M
WHERE  F.id_mag=M.id_mag
GROUP BY (M.ville);

/*prix moyen par ville*/
SELECT D.mois, AVG(F.prix) as prix_moyen
FROM  Fait_Vente F, DateVente D
WHERE  F.id_date=D.id_date
GROUP BY (D.mois);



***************************************
***************************************
BREAK ON MARQUE ON MODELE ON VILLE

SELECT P.marque, P.modele, M.ville, D.mois, COUNT(P.id_prod) AS nb_vente,
      AVG(F.prix) AS prix_moyen
FROM  Fait_vente F, Produit P, Magasin M, DateVente D
WHERE  F.id_prod=P.id_prod AND
      F.id_mag=M.id_mag  AND
      F.id_date=D.id_date
GROUP BY (P.marque, P.modele,M.ville,D.mois);





***************************************
***************************************

CREATE MATERIALIZED VIEW MV1 AS
 SELECT P.marque, P.modele, M.ville, D.mois, COUNT(P.id_prod) AS nb_vente,
        AVG(F.prix) AS prix_moyen
 FROM  Fait_vente F, Produit P, Magasin M, DateVente D
 WHERE  F.id_prod=P.id_prod AND
        F.id_mag=M.id_mag  AND
        F.id_date=D.id_date
 GROUP BY (P.marque, P.modele,M.ville,D.mois);


SELECT * FROM MV1;





Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://mastertwo.jeun.fr
 
TP2
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
mon master2 ISIFAR :: 2e semestre :: Projet des systèmes d'information-
Sauter vers: