Vous êtes sur la page 1sur 4

Cours : Systèmes de Gestion de Bases de Données Chargé de cours : Dr Yacouba GOITA

TD1:
Systèmes de Gestion de Bases de Données (SGBD)
SQL
Correction
Exercice 1
Soit le MRD suivant
Animateurs(matricule_animateur*, nom, prénom)
Cours(code_cours*, niveau, date, tarif_hr, prime_resp, droit_inscrip, code_theme, matricule_animateur)
Animer(code_cours*, matricule_animateur*, nbre_heures)
Participants(matricule*, nom, prénom, localité, code_entreprise)
Catégories(code_catégorie*,libellé)
Participer(code_cours*, matricule)
Entreprises(code_entreprise*, nom, adresse)
Thème(code_thème*, désignation, code_catégorie)

Requêtes
1. Afficher le nom et le prénom de tous les animateurs.
2. Afficher les différents droits d’inscription suivant l’ordre décroissant.
3. Afficher le code entreprise, les noms et prénoms des participants venant de l’entreprise dont le code est
33336.
4. Afficher les matricules des animateurs responsables et la date des cours qui ont eu lieu entre le 1er janvier et
31 janvier 2014.
5. Afficher les codes cours, le droit d’inscription et la prime de responsabilité des cours dont le droit
d’inscription est en dessous de 6000 F et la prime de responsabilité est supérieure à 10000 F
6. Afficher tous les noms et prénoms des participants dont le nom se termine avec la lettre N trié suivant l’ordre
alphabétique des noms et prénoms.
7. Afficher tous les noms et prénoms des participants dont les 2e et 3e lettres du nom sont respectivement C et
H.
8. Quel est le nombre de cours organisés ?
9. Calculer la moyenne des droits d’inscription, des primes de responsabilité et des tarifs heure.
10. Combien de cours organise-t-on pour chaque niveau ?
11. Quel est le code du cours dont le droit d’inscription est le plus élevé ?.

12. Calculer le total des heures prestées par l’animateur ayant le numéro matricule 19800202222.
13. Afficher le numéro matricule et le nombre total d’heures prestées par chaque animateur tirés suivant l’ordre
croissant des numéros matricule.
14. Afficher le numéro matricule et le nombre total d’heures prestées pour les animateurs ayant prestés plus de
10 heures.
15. Afficher le numéro matricule et le nombre total d’heures prestées pour les animateurs ayant prestés plus de
10 heures et qui sont nés en 68.
16. Afficher pour chaque cours le code cours, le nom et le prénom de l’animateur responsable.
17. Afficher pour chaque cours son code, le thème et le nom et le prénom de l’animateur responsable.
Cours : Systèmes de Gestion de Bases de Données Chargé de cours : Dr Yacouba GOITA

18. Pour chaque participant afficher le numéro matricule, le nom, le prénom ainsi que le nombre de cours
auxquels il a participés.
19. Afficher le numéro matricule, le nom et le prénom ainsi que le nombre total d’heures prestées par chaque
animateur.
20. Afficher pour chaque entreprise (code et nom de l’entreprise) le nombre de participants trié suivant l’ordre
croissant des noms d’entreprise.
21. Afficher le nom des catégories pour lesquelles il y a eu plus de 3 cours.
Afficher les noms des animateurs qui ont animé plus de cours que l’animateur dont vous devez saisir le nom.

Solutions
1. SELECT nom, prénom

FROM animateurs

2. SELECT DISTNCT droit_inscrip

FROM cours

ORDER BY droit_inscrip DESC

3. SELECT code_entreprise, nom, prénom

FROM participants

WHERE code_entreprise = “33336”


4. SELECT matricule_animateur, date
FROM cours
WHERE date BETWEEN #01/01/14# AND #31/01/14#
5. SELECT code_cours, droit_inscrip, prime_resp
FROM cours
WHERE droit_inscrip < 6000 AND prime_resp >10000
6. SELECT nom, prenom
FROM participants
WHERE nom LIKE “*N”
ORDER BY nom, prénom
7. SELECT nom, prénom
FROM participants
WHERE nom LIKE “ ?CH*”
8. SELECT COUNT(*) AS [nombre total de cours]
FROM cours
9. SELECT AVG(droit_inscrip) AS [droit d’inscription moyen],
AVG(prime_resp) AS [prime de responsabilité moyenne],
AVG(tarif_hr) AS [tarif heure moyen]
FROM cours
10. SELECT niveau, COUNT(*) AS [nombre de cours]
FROM cours
GROUP BY niveau
11. SELECT code_cours
FROM cours
WHERE droit_inscrip = (SELECT MAX(droit_inscrip)
Cours : Systèmes de Gestion de Bases de Données Chargé de cours : Dr Yacouba GOITA

FROM cours)

12. SELECT SUM(nbre_heures) AS [total des heures prestées par l’animateur 19800202222]
FROM animer
WHERE matriucle_animateur = “19800202222”
13. SELECT matricule_animateur, SUM(nbre_heures)
AS [nombre total d'heures prestées]
FROM animer
GROUP BY matricule_animateur
ORDER BY matricule_animateur
14. SELECT matricule_animateur, SUM(nbre_heures) AS [nombre d'heures prestées]
FROM animer
GROUP BY matricule_animateur
HAVING SUM(nbre_heures) >10
15. SELECT matricule_animateur, SUM(nbre_heures) AS [nombre d'heures prestées]
FROM animer
WHERE matricule_animateur like "1968*"
GROUP BY matricule_animateur
HAVING SUM(nbre_heures) >10;
16. SELECT code_cours, nom, prénom
FROM animateurs, cours
WHERE animateurs.matricule_animateur = cours.matricule_animateur

17. SELECT code_cours, désignation, nom, prénom FROM animateurs , thèmes, cours
WHERE thèmes.code_thème = cours.code_thème
AND animateurs.matricule_animateur = cours.matricule_animateur
18. SELECT matricule, nom, pérnom, COUNT(*) AS [nombre de cours]
FROM participants , participer
WHERE participants.matricule = participer.matriucle
GROUP BY matricule, nom, pérnom
19. SELECT animateurs.matricule_animateur, nom, prénom, SUM(nbre_heures)

AS [nombre total d'heures prestées]


FROM animateurs, animer
WHERE animateurs.matricule_animateur = animer.matricule_animateur
GROUP BY animateurs.matricule_animateur, nom, prénom
20. SELECT entreprises.code_entreprise, entreprises.nom, COUNT(*)

AS [nombre de participants]
FROM entreprises, participants
WHERE entreprises.code_entreprise = participants.code_entreprise
GROUP BY entreprises.code_entreprise, entreprises.nom
ORDER BY entreprises.nom
21. SELECT libellé
FROM catégories, thèmes, cours
WHERE catégories.code_catégorie = thèmes.code_catégorie
AND thèmes.code_thème = cours.code_thème
GROUP BY libellé
HAVING COUNT(*) >3
22. SELECT nom
FROM animer, animateurs
WHERE animateurs.matricule_animateur = animer.matricule_animateur
Cours : Systèmes de Gestion de Bases de Données Chargé de cours : Dr Yacouba GOITA

GROUP BY nom
HAVING COUNT(*) > ( SELECT COUNT(*)
FROM animer, animateurs
WHERE animateurs.matricule_animateur =
animer.matricule_animateur
AND nom = [Saisir le nom de l'animateur])

Vous aimerez peut-être aussi