
 
Université Tunis El Manar
Faculté des Sciences Economiques et de Gestion de Tunis  
Responsable du cours : F. Kboubi 
 
Matière : SGBD 
TP – REQUETES SQL AVANCEES
 
 
 
 
 
 
Objectif – Le but de ce TP est d’écrire des requêtes SQL d’interrogation, de type SELECT FROM 
WHERE  en  utilisant  des  constructions  plus  compliquées  tel  group  by,  having,  et  les  requêtes 
imbriquées.  
Importation  –  Importer  dans  oracle  la  base  de  données  à  partir  du  fichier  sql 
tourdefrancev2_oracle.sql.  
 Le schéma de la base que vous venez d’importer est :  
• EQUIPE(code,nom,directeur)  
• PAYS(code,nom)  
• COUREUR(num-dossart,code-equipe*,nom,code-pays*)  
• ETAPE(num,date-etape,kms,ville-depart,ville-arrivee)  
• TEMPS(num-dossart*,num-etape*,temps-realise)  
 Remarque – la table TEMPS ne stocke que les temps des joueurs qui ont participé à l’étape. Si 
un coureur déclare forfait pour une étape, son temps n’apparait pas.  
F
ONCTIONS D
’
AGREGATION 
(
COUNT
,
 SUM
,
 MAX
,
 MIN
,
 AVG
)
 
 
1. Donnez le meilleur et le pire temps de l’étape 1.  
2. Donnez le nombre de coureurs de l’équipe 1.  
3. Donnez nombre d’étapes et le temps total effectué par 'CHAVANEL Sylvain'.  
4. Donnez la moyenne des distances de chaque étape.  
G
ROUP BY
,
 HAVING 
 
1. Donnez le nombre d’étapes effectuées pour chaque coureur.  
Compléter  la  requête  en  ordonnant  les  résultats  par  ordre  croissant  du  nom  des 
coureurs.  
Modifier la requête de sorte de ne considérer que les temps supérieurs à 2h.  
Compléter  la  requête  en  ne  gardant  que  les  coureurs  qui  ont  effectués  au  moins  une 
étape.  
Quelle est la différence entre la clause WHERE et la clause HAVING ?  
2. Donnez  le  code  et  le  nom  des  pays  ayant  plus  d'un  coureur,  ainsi  que  le  nombre  de 
coureurs par pays, classé par ordre alphabétique croissant des noms de pays.