Employés Oracle
[30 minutes]
Créez sous Oracle la table "emp" décrite ci-dessous et insérez quelques enregistrements.
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
SELECT ename||', '||job "EMPLOYE ET FONCTION"
FROM emp;
EMPLOYE ET FONCTION
-------------------
KING, PRESIDENT
BLAKE, MANAGER
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
SELECT ename, hiredate
FROM emp
WHERE hiredate BETWEEN
TO_DATE('20-Feb-1981','DD-MON-YYYY')
AND TO_DATE('01-May-1981','DD-MON-YYYY')
ORDER BY hiredate;
ENAME HIREDATE
-----------
ALLEN 20-FEB-81
WARD 22-FEB-81
JONES 02-APR-81
BLAKE 01-MAY-81
Question
Afficher le nom de tous les employés, dont le nom contient deux fois la lettre "L".
Solution
SELECT ename
FROM emp
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
SELECT ename, job, sal
FROM emp
WHERE job IN ('CLERK', 'ANALYST')
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
SELECT ename, ROUND(MONTHS_BETWEEN (SYSDATE, hiredate)) MONTHS_WORKED
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
SELECT
ename||' gagne '
|| TO_CHAR(sal, 'fm$99,999.00')
|| ' par mois mail il veut '
|| TO_CHAR(sal * 3, 'fm$99,999.00')
|| '.' "SALAIRES DE REVES"
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
SELECT ROUND(MAX(sal),0) "Maximum",
ROUND(MIN(sal),0) "Minimum",
ROUND(SUM(sal),0) "Sum",
ROUND(AVG(sal),0) "Average"
FROM emp;