Upload
anonymous-wpl47bwu4
View
219
Download
0
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' )