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.