Corrigé des exercices SQL niveau 1

1.1 
 liste des employés dont la fonction est 'MANAGER' dans les départements  20 et 30   
SQL> select ename, job,    deptno
   2 from emp
   3 where job = 'MANAGER'
   4 and (deptno=20 or deptno=30);
ENAME JOB     DEPTNO
----- -----   ------
JONES MANAGER 20
BLAKE MANAGER 30
1.2 

   liste des employés dont la fonction n'est pas 'MANAGER', embauchés    en 81 
SQL> select ename, job,    hiredate
   2 from emp
   3 where job != 'MANAGER'
   4 and to_char(hiredate,'YY')='81';
ENAME  JOB       HIREDATE
-----  ----      --------
ALLEN  SALESMAN  20/02/81
WARD   SALESMAN  22/02/81
MARTIN SALESMAN  28/09/81
KING   PRESIDENT 17/11/81
TURNER SALESMAN  08/09/81
JAMES  CLERK     03/12/81
FORD   ANALYST   03/12/81
1.3 
   liste des employés qui ont un 'M' et un 'A' dans leur nom 
SQL> select ename
   2 from emp
   3 where ename like '%M%A%'
   4 or ename like '%A%M%';
ENAME
----------
MARTIN
ADAMS
JAMES
1.4 
   liste des employés qui ont 2 'A' dans leur nom 
SQL> select ename
   2 from emp
   3 where ename like '%A%A%';
ENAME
----------
ADAMS
1.5 
   liste des employés qui n'ont pas de supérieur 
SQL> select ename, job
   2 from emp
   3 where mgr is null;
ENAME JOB
---------- ---------
KING PRESIDENT
1.6 
   liste des noms des employés et des salaires tronqués au millier    
SQL> select ename, sal,    trunc(sal,-3)
   2 from emp;
ENAME  SAL  TRUNC(SAL,-3)
------ ---- --------- -------------
SMITH  800  0
ALLEN  1600 1000
WARD   1250 1000
JONES  2975 2000
MARTIN 1250 1000
BLAKE  2850 2000
CLARK  2450 2000
SCOTT  3000 3000
KING   5000 5000
TURNER 1500 1000
ADAMS  1100 1000
JAMES  950  0
FORD   3000 3000
MILLER 1300 1000
1.7 
   liste des employés (nom, salaire, dept) avec '****' a la place des noms    du dept 10 
SQL> select decode(deptno,10,'****',ename)    Nom , sal, deptno
   2 from emp;
NOM    SAL  DEPTNO
-----  ---- ------
SMITH  800  20
ALLEN  1600 30
WARD   1250 30
JONES  2975 20
MARTIN 1250 30
BLAKE  2850 30
****   2450 10
SCOTT  3000 20
****   5000 10
TURNER 1500 30
ADAMS  1100 20
JAMES  950  30
FORD   3000 20
****   1300 10
1.8 
   liste des employés avec date de début du mois d'embauche 
SQL> select ename, trunc(hiredate,'MM')    DEBUT, hiredate
   2 from emp;
ENAME   DEBUT    HIREDATE
------  ----     -------- --------
SMITH   01/12/80 17/12/80
ALLEN   01/02/81 20/02/81
WARD    01/02/81 22/02/81
JONES   01/04/81 02/04/81
MARTIN  01/09/81 28/09/81
BLAKE   01/05/81 01/05/81
CLARK   01/06/81 09/06/81
SCOTT   01/12/82 09/12/82
KING    01/11/81 17/11/81
TURNER  01/09/81 08/09/81
ADAMS   01/01/83 12/01/83
JAMES   01/12/81 03/12/81
FORD    01/12/81 03/12/81
MILLER  01/01/82 23/01/82
1.9 
   liste des employés avec nombre de mois d'ancienneté au 1er janvier    2000 
SQL> select ename, hiredate,
   2 months_between(hiredate,'01/01/00')
   3 from emp;

1.10 
   liste des employés et nom de departement des employés travaillant    à Dallas 
SQL> select ename, dname
   2 from emp, dept
   3 where emp.deptno = dept.deptno
   4 and loc = 'DALLAS';
ENAME DNAME
----- --------------
SMITH RESEARCH
ADAMS RESEARCH
FORD  RESEARCH
SCOTT RESEARCH
JONES RESEARCH

(c) 2002- 2006 Didier Deléglise


modifié
le 20/11/2006

Ecrire a DD
ecris
moi


les forums techniques Oracle

mon BLOG Oracle,
en Francais
connaitre DD
l'autre vie
de DD

mon CV

trucs
et astuces

JOBs Oracle
du jour
Homepage "Tout sur Oracle"
Mon site :
Tout sur Oracle (et le web)
Copyright (C) 2002
Utilisation de ces documents