Employés Oracle

[30 minutes]

Créez sous Oracle la table "emp" décrite ci-dessous et insérez quelques enregistrements.

1
emp (ename, job, hiredate, sal) 

Pour chacune des questions suivantes, écrivez le code SQL permettant de répondre à la question sous Oracle.

Question

A partir de la table "emp", afficher le nom des employés ("ename") concaténé avec leur poste ("job") en les séparant par une virgule suivi d'une espace et donner comme titre à la colonne "EMPLOYE ET FONCTION"

Solution

1
SELECT	ename||', '||job "EMPLOYE ET FONCTION" 
2
FROM	emp;
1
EMPLOYE ET FONCTION 
2
	  -------------------
3
	  KING, PRESIDENT
4
	  BLAKE, MANAGER
5
	  CLARK, MANAGER

Question

Afficher le nom et la date d'embauche ("hiredate") des employés embauchés entre le 20 février 1981, et 1 mai 1981. Classez le résultat par date d'embauche.

Indice

Attention à l'utilisation du format "YY" qui pose des problème vis à vis du passage à l'an 2000, préférer le format "YYYY".

Solution

1
SELECT	ename, hiredate
2
FROM	emp
3
WHERE	hiredate BETWEEN 
4
  TO_DATE('20-Feb-1981','DD-MON-YYYY') 
5
  AND TO_DATE('01-May-1981','DD-MON-YYYY')
6
ORDER BY hiredate;
1
	  ENAME   HIREDATE
2
	  -----------
3
	  ALLEN   20-FEB-81
4
	  WARD   22-FEB-81
5
	  JONES  02-APR-81
6
	  BLAKE  01-MAY-81

Question

Afficher le nom de tous les employés, dont le nom contient deux fois la lettre "L".

Solution

1
SELECT	ename
2
FROM	emp
3
WHERE	ename LIKE '%L%L%';

Question

Afficher le nom, poste et salaire ("sal') de tous les personnes qui ont comme poste 'Clerk' ou 'Analyst' et dont le salaire est différent de $1000, $3000, ou $5000.

Solution

1
SELECT	ename, job, sal
2
FROM	emp
3
WHERE	job IN ('CLERK', 'ANALYST')
4
AND	sal NOT IN (1000, 3000, 5000);

Question

Afficher le nom de chaque employé et calculer le nombre de mois qu'il a travaillé jusqu'à ce jour (après l'avoir arrondi celui-ci à la plus proche valeur entière). Nommer la colonne MONTHS_WORKED.

Solution

1
SELECT	ename, ROUND(MONTHS_BETWEEN (SYSDATE, hiredate)) MONTHS_WORKED
2
FROM 	emp;

Question

Ecrivez la requête qui affiche pour chaque employé le résultat suivant :

"X" gagne "Y" par mois mais il veut "3 fois Y".

Nommer la colonne SALAIRES DE REVES.

Solution

1
SELECT	
2
 ename||' gagne '
3
 || TO_CHAR(sal, 'fm$99,999.00')
4
 || ' par mois mail il veut '
5
 || TO_CHAR(sal * 3, 'fm$99,999.00')
6
 || '.' "SALAIRES DE REVES"
7
FROM	emp;

Question

Afficher le salaire maximum, minimum, la somme des salaires et le salaire moyen de tous les employés. Nommer les colonnes respectivement Maximum, Minimum, Sum, and Average. Arrondissez les résultats à zéro décimales.

Solution

1
SELECT	 ROUND(MAX(sal),0) "Maximum",
2
  ROUND(MIN(sal),0) "Minimum",
3
  ROUND(SUM(sal),0) "Sum",
4
  ROUND(AVG(sal),0) "Average"
5
FROM	emp;