0% ont trouvé ce document utile (0 vote)
104 vues3 pages

Gestion des forfaits de ski en SQL

Ce document décrit le schéma d'une base de données pour la gestion des opérations d'une station de ski. Il présente 9 requêtes SQL à formuler sur cette base pour obtenir diverses informations telles que le nombre de forfaits vendus pendant les vacances ou les clients ayant eu des forfaits à Noël et au Nouvel An.

Transféré par

Slimén Nasri
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
104 vues3 pages

Gestion des forfaits de ski en SQL

Ce document décrit le schéma d'une base de données pour la gestion des opérations d'une station de ski. Il présente 9 requêtes SQL à formuler sur cette base pour obtenir diverses informations telles que le nombre de forfaits vendus pendant les vacances ou les clients ayant eu des forfaits à Noël et au Nouvel An.

Transféré par

Slimén Nasri
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

TD 10

EXERCICE 1
La station de ski « Ski Sympa » possède une base de données pour la gestion des opérations de
vente de forfait de ski. Cette base comporte les informations concernant les forfaits disponibles
et les forfaits vendus, ainsi que les informations sur les cartes de fidélités et les clients possédant
ces cartes. Le schéma de cette base de données est donné ci-dessous :
Type_Forfait (codefor, nomfor, prixfor, duree, conditions)
Forfait_Vendu (numfor, codefor, début, fin)
Carte_Fidel (numcarte, nomclient, adrclient, emailclient, datecarte)
Hist_Carte (numcarte, numfor, dateacq)
Exprimez les requêtes suivantes en SQL :
1.Combien de forfaits la station a vendu pour les vacances de Noël (du 20/12 au 02/01).

SELECT count(numfor)

FROM Forfait_Vendu F

WHERE F.début>=’20/12/2010’ and F.fin<= ‘02/01/2010’

2) Combien des forfaits la station a vendu pour les clients préférentiels pendant les vacances de Noël
(du 20/12 au 02/01).

SELECT count(numfor)

FROM Hist_Carte AS F

WHERE F.dateacq BETWEEN ‘20/12/2010’and ‘02/01/2010’

3) Les forfaits valables le jour de l’an avec leur type (codefor et nomfor), leur prix et leur période de
validité (début et fin).

SELECT T.codefor, T.nomfor, T.prix, F.début, F.fin

FROM Type_forfait AS T, Forfait_Vendu AS F

WHERE T.codefor=F.codefor and F.début <= ‘01/01/2021’ and F.fin>=’01/01/2021’


4) Les clients (numcarte) qui n’ont jamais acquis un forfait journée ou demi-journée.

SELECT C.numcarte

FROM Carte_Fidel AS C

WHERE C.numcarte NOT IN ( SELECT H.numcarte

FROM Hist_Carte H, Type_forfait T, Forfait_Vendu F

WHERE T.codefor=F.codefor and H.numfor=F.numfor and (T.nomfor=


"journée" or T.nomfor="demi-journée")

5) Les clients (nomclient) qui avaient un forfait valable à Nöel et au jour de l’an (pas forcément le même
forfait).

SELECT C.nomclient

FROM Carte_Fidel AS C, Forfait_Vendu AS F1, Hist_Carte AS H1, Forfait_Vendu AS F2, Hist_Carte AS H2

WHERE C.numcarte=F1.numcarte and H1.numfor=F1.numfor and F1.début <=’25/12/2010’and F1.fin


<=’25/12/2010’ and H2.numfor=F2.numfor and F2.début <=’01/01/2011’ and F2.fin <=’01/01/2011’

7) Les clients (nomclient, emailclient) qui ont toujours pris un forfait saison.

SELECT C.nomclient, C.emailclient

FROM Carte_Fidel AS C

WHERE C.numcarte NOT IN ( SELECT H.numcarte

FROM Hist_Carte AS H, Type_forfait AS T, Forfait_Vendu AS F

WHERE T.codefor=F.codefor and H.numfor=F.numfor and

T.nomfor<>"saison"

8) La durée moyenne, en nombre de jour, des forfaits offerts par la station.

SELECT avg(durée)

FROM Type_Forfait
9) Les forfaits vendus (toutes les informations sur les forfaits et leur type de forfait) dont la durée
réelle est supérieure à la durée moyenne des forfaits vendus.

SELECT T.*, F.*

FROM Forfait_Vendu as F, Type_Forfait AS T

WHERE (T.fin-T.debut)>= (SELECT avg(f2.fin-f2.debut) FROM Forfait_Vendu as f2)

Vous aimerez peut-être aussi