BDD_TD3

Embed Size (px)

Citation preview

  • 7/25/2019 BDD_TD3

    1/5

    Universit de Provence Bases de donnes

    Licence dInformatique TD No 3

    Troisime anne SQL dORACLE

    La base de donnes de dmonstration dOracle a les schmas de tables suivantes :

    DEPT( Deptno, Dname, City)

    BONUS( Ename, Job, Sal, Comm)

    SALGRADE( Grade, LoSal, HiSal)EMP( Empno, Ename, Job, MgrNo, Hiredate, Sal, Comm, Deptno)

    Exercice 1

    Ecrire en SQL dOracle les requtes suivantes :

    1. Chercher les villes de dpartements ayant au moins un employ qui a une commission suprieure sonsalaire.

    > SELECT Ci t yFROMDEPT, EMP

    WHERE DEPT. Dept no=EMP. Dept no

    AND Comm>Sal ;

    2. Liste des employs dont les noms ne commencent pas par Aet ne se terminent pas par S et qui sont

    embauchs aprs le 31-DEC-81.> SELECT Ename

    FROM EMPWHERE TO_CHAR( Hi r edat e, ' YY-MM- DD' ) >' 81- 12- 31'AND EnameNOT LIKE ' A%S' ;

    3. Liste des employs, avec leurs dpartements de travail, dont les commissions sont inconnues.

    > SELECT Ename, DnameFROM EMP, DEPT

    WHERE DEPT. Dept no=EMP. Dept noAND Comm IS NULL;

    4. Liste des employs qui travaillent dans le dpartement numro 10 ou 30, et qui ont les salaires entre 1000 et

    3000 euros. Afficher la liste avec les colonnes EMP-NAME, DEPTNO, JOB, SALARY.

    > SELECT EnameAS EMP-NAME, Dept noAS DEPTNO, J obAS JOB, Sal AS SALARYFROM EMP

    WHERE Dept no IN ( 10, 30)AND Sal BETWEEN 1000AND 3000;

    5. Liste des employs qui travaillent comme SALESMANou CLERK, et qui ont les salaires entre 1000 et3000 euros. Afficher la liste avec les colonnes EMP-NAME, JOB, SALARY, COMM.

    > SELECT EnameAS ENAME, J obAS JOB, Sal AS SALARY, CommAS COMMFROM EMP

    WHERE J ob IN ( ' SALESMAN' , ' CLERK' )AND Sal BETWEEN 1000AND 3000;

    6. Liste des commissions qui apparaissent la fois dans la table BONUSet dans la table EMP.

    > SELECT CommFROM BONUS

    INTERSECT

    SELECT CommFROM EMP;

    7. Liste des commissions qui apparaissent dans la table EMPet qui napparaissent pas dans la table BONUS.

    > SELECT CommFROM EMP

    MINUS

    SELECT CommFROM BONUS;

    Page 1 sur 5

  • 7/25/2019 BDD_TD3

    2/5

    8. Chercher les directeurs et les dpartements des employs qui ont le mme salaire que WARDet qui ont lacommission suprieure la commission de WARD.

    > SELECT Mgr No, DnameFROM DEPT, EMP

    WHERE DEPT. Dept no=EMP. Dept noAND Sal =( SELECT SAL

    FROM EMPWHERE ame= ARD ) En W AND Comm>( SELECT Comm

    FROM EMPWHERE Ename=' WARD' ) ;

    9. Liste des employs qui ne sont ni PRESIDENTni MANAGER.

    > SELECT EnameFROM EMP

    MINUS

    SELECT *FROM EMP

    WHERE J ob IN ( ' PRESI DENT' ,' MANAGER' ) ;

    10. Liste des employs qui ont le mme grade de salaire que JONES.

    > SELECT EnameFROM EMP E

    WHERE ( SELECT Gr adeFROM SALGRADE

    WHERE E. Sal >=LoSalAND E. Sal =LoSalAND EMP. Sal SELECT *FROM DEPT

    MINUS

    SELECT DEPT. Dept no, DEPT. Dname, DEPT. Ci t yFROMDEPT, EMP, BONUS

    WHERE EMP. Dept no=DEPT. Dept noAND EMP. Ename=BONUS. Ename;

    12. Liste demploys dans le dpartement RESEARCH ou ACCOUNTINGqui ne sont pas figurs dans latable BONUS.

    >

    SELECT EMP. EnameFROM DEPT, EMP

    WHERE DEPT. Dept no=EMP. Dept noAND Dname IN ( ' RESEARCH' ,' ACCOUNTI NG' )

    MINUS

    SELECT EMP. EnameFROMDEPT, EMP, BONUS

    WHERE EMP. Dept no=DEPT. Dept noAND EMP. Ename=BONUS. Ename;

    Page 2 sur 5

  • 7/25/2019 BDD_TD3

    3/5

    13. Liste de directeurs et leurs employs. Trier la liste dans lordre croissant de noms de directeurs, et nomsdemploys.

    > SELECT D. Ename, E. EnameFROM EMP E, EMP D

    WHERE D. Empno=E. Mgr NoORDER BY D. EnameASC, E. EnameASC;

    14. Liste des employs qui a un salaire suprieur au salaire de son directeur.

    > SELECT E. Empno, E. Ename, E. J ob, E. MgrNo, E. Hi r edate, E. Sal , E. Comm, E. Dept noFROM EMP E, EMP D

    WHERE D. Empno=E. Mgr NoAND D. Sal SELECT Dname, Gr adeFROM DEPT, SALGRADE, EMP

    WHERE DEPT. Dept no=EMP. Dept no

    AND EMP. Sal >=SALGRADE. LoSalAND EMP. Sal SELECT EnameAS Employe, Sal AS Salaire, ROUND( Sal *0. 15, 2) AS ChargesFROM EMP

    WHERE Sal *0. 15>700OR Sal

    SELECT EMP. EnameAS Employe, EMP. Sal AS Salaire, ROUND( Sal *0. 15, 2) ASCharges, ROUND( Sal *( 4. 5+Gr ade*0. 5) / 100, 2) AS Cotisation_SS

    FROM EMP, SALGRADEWHERE EMP. Sal >=LoSalAND EMP. Sal SELECT EMP. EnameAS Employe, EMP. Sal AS Salaire, EMP. CommASCommission, ROUND( EMP. Sal *5/ 100+EMP. Comm, 2)AS Prime

    FROM EMP, BONUSWHERE EMP. Ename=BONUS. EnameAND ( BONUS. Comm! =0AND BONUS. Comm IS NOT NULL)

    UNION

    Page 3 sur 5

  • 7/25/2019 BDD_TD3

    4/5

    SELECT EMP. Ename, EMP. Sal , EMP. Comm, ROUND( EMP. Sal *5/ 100+100, 2)FROM EMP, BONUS

    WHERE EMP. Ename=BONUS. EnameAND ( BONUS. Comm=0 OR BONUS. Comm IS NULL) ;

    4. Supposons que chaque employ figur dans la table BONUSa une prime de 6% de son salaire si son salaire

    est de grade 1, 7% pour le grade 2, , 10% pour le grade 5. Afficher les noms de ces employs, leurs

    salaires, commissions et primes, si leurs primes ne dpassent pas 1000 euros.> SELECT EMP. EnameAS Employe, EMP. Sal AS Salaire, EMP. CommAS

    Commission, ROUND( EMP. Sal *( 5+Gr ade) / 100, 2) AS PrimeFROM EMP, BONUS, SALGRADE

    WHERE EMP. Ename=BONUS. EnameAND EMP. Sal >=LoSalAND EMP. Sal SELECT SUM( Sal ) AS Somme_Salaires, COUNT( * )AS NB_EmployesFROM EMP;

    6. Calculer la somme des salaries et le nombre des employs des deux dpartements n30 ou n20 dont lesalaire est infrieur 1000 euros ou qui nont pas de commission.

    >

    SELECT SUM( Sal ) AS Somme_Salaires, COUNT( * )AS NB_EmployesFROM EMP

    WHERE Dept no IN ( 20, 30)AND ( Sal SELECT SUM( Sal ) AS Somme_Salaires, ROUND( SUM( Sal *0. 15) , 2) ASSomme_Charges

    FROM EMPWHERE Mgr No=7698;

    8. Avec la mme hypothse que la question 2, calculer les sommes des salaires, de charges sociales, et de

    cotisations la scurit sociale des employs ayant un salaire suprieur ou gal 1500 euros, ou ayant unecommission connue et un salaire infrieur 1500 euros.> SELECT SUM( Sal ) AS Somme_Salaires, ROUND( SUM( Sal *0. 15) , 2) AS

    Somme_Charges, ROUND( SUM( ( Sal *4. 5+Gr ade*0. 5) / 100) , 2) ASSomme_Cotisation_SS

    FROM EMP, SALGRADEWHERE Sal >=1500

    OR ( Sal =LoSalAND EMP. Sal SELECTMIN( Sal ) AS Salaire_MIN,MAX( Sal ) AS Salaire_MAX, ROUND(AVG( Sal ) ,

    2)AS Salaire_MOYEN, ROUND( STDDEV(Sal ) , 2) AS ECART_TYPE,ROUND(VARIANCE(Sal ) , 2) AS VARIANCE

    FROM EMP;

    10. Liste des dpartements avec le nombre demploys dans chaque dpartement, ainsi que la somme dessalaires annuels payer aux employs.

    > SELECT DnameAS Depar t ement , COUNT( Ename) AS Nb_Empl oyes, SUM( Sal *12) ASSomme_Sal ai r es_Annuel s

    FROMEMP, DEPTWHERE DEPT. Dept no=EMP. Dept noGROUP BY Dname;

    Page 4 sur 5

  • 7/25/2019 BDD_TD3

    5/5

    11. Liste des sommes de salaires demploys daprs les grades de salaire.> SELECT Gr ade, SUM(Sal ) AS Somme_Sal ai r es_Empl oyes

    FROM EMP, SALGRADEWHERE EMP. Sal >=LoSalAND EMP. Sal SELECT S1. Gr ade, E1. Dept no, COUNT( E1. Ename) , SUM( E1. Sal )FROM EMP E1, SALGRADE S1

    WHERE E1. Sal >=S1. LoSalAND E1. Sal =S2. LoSalAND E2. Sal 2000GROUP BY S1. Gr ade, E1. Dept noORDER BY S1. Gr adeASC, E1. Dept noASC;

    13. iste des dpartements tels que la somme des salaires de leurs employs est la plus grande parmi les sommesde salaires des employs de chaque dpartement.

    > SELECT DnameFROMDEPT D1

    WHERE ( SELECT SUM( E2. Sal )FROM EMP E2, DEPT D2

    WHERE E2. Dept no=D2. Dept noAND D2. Dept no=D1. Dept no

    GROUP BY E2. Dept no) =( SELECTMAX( SUM(Sal ) )FROM EMP, DEPT

    WHERE EMP. Dept no=DEPT. Dept noGROUP BY DEPT. Deptno) ;

    14. Liste des employs ayant les salaires infrieurs au salaire moyen dans leur dpartement.

    > SELECT EnameFROM EMP E

    WHERE E. Sal SELECT E. EnameFROM EMP E, DEPT

    WHERE DEPT. Deptno=E. DeptnoAND TO_CHAR( E. Hi r edate, ' YY- MM- DD' )