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