Vous êtes sur la page 1sur 7

Solution de la fiche de TD3

Exercice : 1

1. Affichez les identifiants des projets ayant démarré en Mai 2018.


Select id
From planning
Where debut between ’01-May-2018’ and ‘31-May-2018’;

2. Donnez le nombre de projets non encore finis.


Select count (*)
From planning
Where fin is Null;

3. Quels sont les identifiants de tous les projets accompagnés de leur date début
et date prévue de fin.
Select id, debut, debut + durée
From planning;

4. Quels sont les identifiants des projets terminés avec leurs durées prévues et
leurs durées effectives.
Select id, durée, fin - début
From planning
Where fin is not null;

5. Affichez le nombre de projets finis en avance par rapport à leur date prévue
de fin.
Select count (*)
From planning
Where (fin is not Null) and (fin < debut + durée);

6. Quel est le nombre moyen de jours de retard pour les projets finis.
Select avg (fin-(début + durée))
From planning
Where (fin is not Null) and (fin> début + durée);

7. Listez les identifiants des projets encore en cours mais déjà en retard avec le
nombre de jours de retard accumulés à ce jour.
Select id, sysdate - (début + durée)
From planning
Where (fin is Null) and (debut + durée < sysdate);
Exercice : 2

1. Liste des personnes par ordre croissant d’identifiants


Select * from personne order by id;

2. Liste des couples de projets qui sont en collaboration avec le projet 4


Select *
From collaboration
Where (idprojetA=4) or (idprojetB=4);

3. Les noms des personnes ayant une responsabilité dans le projet 1


Select distinct nom
From personne, responsabilité
where (personne.id = responsabilité.idpersonne)
And (responsabilité.idprojet=1) ;

Ou bien :

Select distinct nom from personne


Where id IN
(Select idpersonne
From responsabilité
Where responsabilité.Idprojet = 1);

4. Les noms des taches remplies dans le projet 2


Select distinct nom
From Tache, responsabilité
Where (Tache.id = responsabilité.idtache)
And (responsabilité.idprojet = 2) ;

Ou bien :

Select distinct nom


From Tache
Where id IN
(Select idtache
From responsabilité
Where responsabilité.idprojet = 2) ;

5. Liste des formations des personnes impliquées dans le projet 3


Select distinct formation
From personne, responsabilité
Where (id = idpersonne)
And (idprojet = 3) ;
Ou bien :

Select distinct formation


From personne
Where id IN
(Select idpersonne
From responsabilité
Where idprojet = 3) ;

6. Liste des numéros de projets qui comportent la tache ‘surveillance des


capteurs’
Select idprojet
From responsabilité,Tache
Where (Tache.id = responsabilité.idtache)
And (Tache.nom = ‘surveillance des capteurs’) ;

Ou bien :

Select idprojet
From responsabilité
Where idtache IN
(Select id
From Tache
Where nom = ‘surveillance des capteurs’);

7. Nom du responsable du projet 4


Select personne.nom
From personne, projet
Where (personne.id = projet.coordinateur)
And (projet.id=4) ;

8. Numéros des personnes qui travaillent sur le même projet que la personne 5
Select idpersonne
From responsabilité
Where idprojet IN
(Select idprojet
From responsabilité
Where idpersonne = 5);

9. Nombre de personnes impliquées en tant que responsable d’une tache pour


chaque projet
Select idprojet, count(distinct idpersonne)
From responsabilité
Group by idprojet;

10. Nombre de responsabilités par personne


Select idpersonne, count(*)
From responsabilite
Group by idpersonne;
11. Salaire moyen pour chaque formation
Select formation, avg(salaire)
From personne
Group by formation;


Numéros des personnes qui ont plus d’une tache dans chaque projet
(Cette question n’existe pas dans la fiche de TD)
Select idprojet, idpersonne
From responsabilité
Group by idprojet having count(idtache) > 1;

12. Formation pour laquelle le salaire est minimum


Select formation
From personne
Where Salaire = (Select MIN(salaire) From personne);

13. Nom du projet qui a la durée la plus longue


Select nom
From projet
Where duree = (Select MAX(duree) From projet);

14. Id et noms des personnes qui ne sont pas coordinateur de projet


Select id, nom
From personne
Where id NOT IN
(Select coordinateur From projet);

15. Liste des projets pour les quels on connait le coût


Select *
From projet
Where coût IS NOT NULL;

16. Noms des personnes qui ont un salaire compris entre 25000 et 30000.
Select nom
From personne
Where salaire BETWEEN ‘25000’ And ‘30000’;

Exercice : 3

1. Noms des étudiants habitant ’Sidi Bel Abbès’


Select nomE
From Etudiant
Where ville = ‘Sidi Bel Abbès’;
2. Numéros et noms des étudiants d’Oran qui pratiquent le "football" pour leurs
études.
Select NE, nomE
From Etudiant, Pratique, Sport
Where (Etudiant.NE = Pratique.NE)
And (paratique.CodeS = Sport.CodeS)
And (ville = ‘Oran’)
And (type = ‘etudes’)
And (nomS = ‘football’);

3. Numéros et noms des étudiants qui pratiquent le "football" ou le "tennis".


Select NE, nomE
From Etudiant, Pratique, Sport
Where (Etudiant.NE = Pratique.NE)
And (paratique.CodeS = Sport.CodeS)
And (nomS = ‘tennis’) or (nomS = ‘football’);

Ou bien:

Select NE, nomE


From Etudiant, Pratique, Sport
Where (Etudiant.NE = Pratique.NE)
And (paratique.CodeS = Sport.CodeS)
And (nomS = ‘tennis’)
UNION
Select NE, nomE
From Etudiant, Pratique, Sport
Where (Etudiant.NE = Pratique.NE)
And (paratique.CodeS = Sport.CodeS)
And (nomS = ‘football’);

4. Numéros et noms des étudiants qui pratiquent le "football" et le "tennis".


Select NE, nomE
From Etudiant, Pratique, Sport
Where (Etudiant.NE = Pratique.NE)
And (paratique.CodeS = Sport.CodeS)
And (nomS = ‘tennis’)
INTER
Select NE, nomE
From Etudiant, Pratique, Sport
Where (Etudiant.NE = Pratique.NE)
And (paratique.CodeS = Sport.CodeS)
And (nomS = ‘football’);

5. Numéros et noms des étudiants qui pratiquent un autre sport que le "tennis".
Select NE, nomE
From Etudiant, Pratique, Sport
Where (Etudiant.NE = Pratique.NE)
And (paratique.CodeS = Sport.CodeS)
And (nomS <> ‘tennis’)
6. Numéros et noms des étudiants qui ne pratiquent aucun sport.
Select NE, nomE
From Etudiant
MINUS
Select NE, nomE
From Etudiant, Pratique
Where (Etudiant.NE = Pratique.NE) ;

7. Numéros et noms des étudiants qui pratiquent, pour leurs loisirs, que le
"tennis".
Select NE, nomE
From Etudiant, Pratique, Sport
Where (Etudiant.NE = Pratique.NE)
And (paratique.CodeS = Sport.CodeS)
And (nomS = ‘tennis’)
And (type = ‘loisirs’) ;
MINUS
Select NE, nomE
From Etudiant, Pratique, Sport
Where (Etudiant.NE = Pratique.NE)
And (paratique.CodeS = Sport.CodeS)
And (nomS <> ‘tennis’)
And (type = ‘loisirs’) ;

8. Noms des sports qui sont offerts mais pas pratiqués


Select nomS
From Sport, Offert
Where Sport.CodeS = Offert.CodeS
MINUS
Select nomS
From Sport, Pratique;
Where Sport.CodeS = Pratique.CodeS

9. Numéros des étudiants qui pratiquent les mêmes sports que l’étudiant
« Amine »
Select NE
From Pratique
Where CodeS IN
(Select CodeS
From Pratique, Etudiant
Where (Pratique.NE = Etudiant.NE)
And (nomE=’Amine’);

11. Toutes les informations des étudiants qui pratiquent au moins un sport.
Select NE, nomE, ville
From Etudiant, Pratique ;
Where (Etudiant.NE = Pratique.NE)

12. Donnez les numéros et noms des étudiants homonymes (même nom).
Select x.NE, x.nomE, y.NE, y.nomE
From Etudiant x, Etudiant y
Where (x.NE<>y.NE)
And (x.NomE = y.NomE);

Vous aimerez peut-être aussi