Telechargé par Abderrachid ERREZGOUNY

TP SQL

publicité
Université Tunis El Manar
Faculté des Sciences Economiques et de Gestion de Tunis
Responsable du cours : F. Kboubi
Niveau : 2LFIG
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.
FONCTIONS D’AGREGATION (COUNT, SUM, MAX, MIN, AVG)
1.
2.
3.
4.
Donnez le meilleur et le pire temps de l’étape 1.
Donnez le nombre de coureurs de l’équipe 1.
Donnez nombre d’étapes et le temps total effectué par 'CHAVANEL Sylvain'.
Donnez la moyenne des distances de chaque étape.
GROUP 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.
1
3. Donnez le nom des coureurs dont le temps total (somme du temps mis pour chaque
étape) est inférieur à 9h00, classé par temps total croissant.
REQUETES IMBRIQUEES
1. Donnez le nom des joueurs qui n'ont pas couru l'étape 2.
2. Donnez le nom des coureurs dont la première lettre de leur nom est identique à celle
d'un autre joueur (exemple : REICHL et ROUS) en utilisant EXISTS.
3. Donnez le nom et le temps du dernier coureur arrivé pour chaque étape
4. Donnez les coureurs qui n'ont pas gagné (autrement dit tous les coureurs sauf le
premier) pour chaque étape.
5. Donnez le 2ième meilleur temps pour l'étape 1 en utilisant le fait qu'il n'y a aucun ex aequo
(les temps sont tous uniques).
6. Même question en ne présumant d'aucune unicité sur les temps, sachant qu'on ne
cherche pas à laisser de rang vide.
2
Téléchargement