AIME ZAHUI
TD : Requêtes SQL
Exprimer toutes les requêtes suivantes en langage SQ
1. Pour donner tous les tuples de DEPT
SELECT * FROM DEPT;
2. Pour afficher les deux premières lignes de DEPT (classées par dno croissant), puis les deux
suivantes
SELECT * FROM DEPT ORDER BY dno LIMIT 2 ;
SELECT * FROM DEPT ORDER BY dno LIMIT 2,2 ;
3. Pour donner les noms et les salaires des employés
SELECT enom, sal FROM EMP ;
4. Pour donner toutes les professions des employés (sans doublons)
SELECT DISTINCT prof FROM EMP;
5. Pour donner les dates d'embauche des techniciens
SELECT dateemb FROM EMP WHERE prof = 'technicien’ ;
6. Pour faire le produit cartésien entre EMP et DEPT
SELECT * FROM EMP, DEPT;
7- Donner les noms des employés et les noms de leur département
SELECT enom, dnom FROM EMP, DEPT WHERE [Link] = [Link];
8- Donner les numéros des employés travaillant à Boston
SELECT eno FROM EMP, DEPT WHERE [Link] = [Link] AND [Link] = 'Boston';
9- Donner les noms des directeurs des départements 1 et 3
SELECT enom FROM EMP, DEPT WHERE [Link] = [Link] AND [Link] IN (1,3);
10- Donner les noms des employés travaillant dans un département avec au moins un
ingénieur
SELECT DISTINCT [Link] FROM EMP, DEPT WHERE [Link] = [Link] AND [Link]
IN (SELECT dno FROM EMP WHERE prof = 'ingénieur');
1
AIME ZAHUI
11- Donner le salaire et le nom des employés gagnant plus qu'un (au moins un) ingénieur
SELECT enom, sal FROM EMP WHERE sal > ANY(SELECT sal FROM EMP WHERE prof =
'ingénieur');
12- Donner les noms des employés et les noms de leurs directeurs de département
SELECT [Link], [Link] FROM EMP, DEPT, EMP DIR WHERE [Link] = [Link] AND
[Link] = [Link];
13- Donner les noms, emplois et salaires des employés par emploi croissant, et pour chaque
emploi, par salaire décroissant
SELECT enom, prof, sal FROM EMP ORDER BY prof ASC, sal DESC;
14- Donner le salaire moyen des employés
SELECT AVG(sal) FROM EMP;
15- Donner le nombre d'employés du département Production
SELECT COUNT(*) FROM EMP, DEPT WHERE [Link] = [Link] AND [Link] =
'Production';
16- Donner les numéros de département et leur salaire maximum
SELECT dno, MAX(sal) FROM EMP GROUP BY dno;
17- Donner les professions et leur salaire moyen
SELECT prof, AVG(sal) FROM EMP GROUP BY prof;
18- Donner le salaire moyen de la profession qui a le salaire moyen le plus bas
SELECT AVG(sal) FROM EMP GROUP BY prof HAVING AVG(sal) = MIN(AVG(sal));
19- Donner les noms des départements de Boston qui ont plus de dix employés
SELECT [Link] FROM DEPT, EMP WHERE [Link] = 'Boston' AND [Link] = [Link]
GROUP BY [Link] HAVING COUNT(*) > 10;
20- Donner les noms des employés ayant le salaire maximum de chaque département
SELECT [Link], [Link] FROM EMP WHERE [Link] = (SELECT MAX(sal) FROM EMP
WHERE [Link] = dno);
21- Les noms des employés et leur salaire exprimé en pourcentage du salaire maximum
2
AIME ZAHUI
SELECT [Link], 100*[Link]/(SELECT MAX(sal) FROM EMP WHERE [Link] = dno)
FROM EMP;
22- Donner le nom des employés qui ne sont pas directeurs
SELECT ename, sal FROM EMP WHERE eno NOT IN (SELECT dir FROM DEPT);
23- Donner le salaire et le nom des employés gagnant moins que tous les ingénieurs
SELECT ename, sal FROM EMP WHERE sal < ALL(SELECT sal FROM EMP WHERE prof =
'ingenieur');