Correction série de révision SQL
1) Nom des stations ayant strictement plus de 200 places.
SELECT nomStation
FROM Station
WHERE capacité > 200
nomStation
Venusa
Passac
2) Noms des clients dont le nom commence par ’P’ ou dont le solde est supérieur à
10000.
SELECT nom
FROM Client
WHERE nom LIKE ’P%’ Or Solde > 10000
Nom
Fogg
Pascal
3) Quelles sont les régions dont l’intitulé comprend (au moins) deux mots ?
SELECT région
FROM Station
WHERE région LIKE ’% %’
région
Océan Indien
4) Nom des stations qui proposent de la plongée.
SELECT nomStation
FROM Activité
WHERE Libellé = ’Plongée’
NomStation
Venusa
Farniente
5) Nom des clients qui sont allés à Santalba.
SELECT nom
FROM Client C, Séjour S
WHERE [Link] = [Link]
And station = ’Santalba’
Nom
Kerouac
Pascal
6) Donnez les couples de clients qui habitent dans la même région. Attention : un couple
doit apparaître une seule fois.
SELECT [Link], [Link]
FROM Client C1, client C2
WHERE [Link]<[Link] AND C1.région=C2.région;
[Link] [Link]
Fogg Pascal
7) Nom des régions qu’a visité Mr Pascal.
SELECT DISTINCT St.région
FROM Station St, Client C, Séjour S
WHERE [Link] = [Link]
And [Link] = [Link]
And [Link] = ’Pascal’
région
Antilles
8) Nom des stations visitées par des européens.
SELECT DISTINCT station
FROM Client C, Séjour S
WHERE [Link] = [Link]
And région = ’Europe’
Station
Passac
Santalba
Venusa
Farniente
9) Qui n’est pas allé dans la station Farniente ?
SELECT DISTINCT nom
FROM Client
WHERE id Not In
(Select idClient
From Séjour
WHERE station = ’Farniente’)
Nom
Pascal
10) Quelles stations ne proposent pas de la plongée ?
SELECT DISTINCT NomStation
FROM Activité
WHERE NomStation Not In
(Select NomStation
From Activité
WHERE Libellé = ’Plongée’)
NomStation
Passac
Santalba
11) Combien de séjours ont eu lieu à Passac ?
SELECT COUNT(*) As nbreSéjours
FROM Séjour
WHERE station = ’Passac’
nbreSéjours
2
12) Donner, pour chaque station, le nombre de séjours qui s’y sont déroulés.
SELECT station, COUNT(*) As nbreSéjours
FROM Séjour
GROUP BY station
station nbreSéjours
Passac 2
Santalba 2
Venusa 2
Farniente 2
13) Donner les stations où se sont déroulés au moins 2 séjours.
SELECT station, COUNT(*) As nbreSéjours
FROM Séjour
GROUP BY station
Having COUNT(*) >= 2
station nbreSéjours
Passac 2
Santalba 2
Venusa 2
Farniente 2
4
14) Les clients qui sont allés dans toutes les stations.
SELECT nom
FROM Client C
WHERE NOT EXISTS( SELECT nomStation
FROM Station St
WHERE NOT EXISTS (SELECT *
FROM Séjour S
WHERE [Link]=[Link]
AND [Link]=[Link]) ) ;
Nom
Kerouac
15) Quelles sont les stations dont le nom commence par un ’V’ et comprend exactement 6
caractères ?
SELECT nomStation
FROM Station
WHERE nomStation LIKE ’V̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵̵’
NomStation
Venusa
16) Donnez tous les noms de région dans la base.
SELECT région FROM Station
UNION
SELECT région FROM Client
Région
Antilles
Océan Indien
Amérique
Europe
17) Donnez les régions où l’on trouve à la fois des clients et des stations.
SELECT région FROM Station
INTERSECT
SELECT région FROM Client
région
Europe
18) Quelles sont les régions où l’on trouve des stations mais pas des clients ?
SELECT région FROM Station
EXCEPT
SELECT région FROM Client
Autrement
SELECT région FROM Station
Minus
SELECT région FROM Client
région
Antilles
Océan Indien
19) Où (station, lieu) ne peut-on pas faire du ski ?
SELECT nomStation, lieu
FROM Station
WHERE nomStation NOT IN (SELECT nomStation FROM Activité
WHERE libellé = ’Ski’)
5
nomStation lieu
Venusa Guadeloupe
Farniente Seychelles
Santalba Martinique
6
20) Quelle station pratique le tarif le plus élevé ?
SELECT nomStation
FROM Station
WHERE tarif >= ALL (SELECT tarif FROM Station)
nomStation
Santalba
Ou bien
SELECT nomStation
FROM Station
WHERE tarif >= (SELECT max(tarif)FROM Station)
21) Dans quelle station pratique-t-on une activité au même prix qu’à Santalba ?
SELECT nomStation, libellé
FROM Activité
WHERE nomStation != ’Santalba’
And prix IN (SELECT prix FROM Activité WHERE nomStation = ’Santalba’)
NomStation Libellé
Passac Piscine
2ème possibilité :
SELECT nomStation, libellé
FROM Activité A1
WHERE nomStation != ’Santalba’
AND EXISTS (SELECT * FROM Activité A2
WHERE nomStation = ’Santalba’
AND [Link] = [Link])
22) Combien de places a réservé Mr Kerouac pour l’ensemble des séjours ?
SELECT SUM (nbPlaces) As nbreplaces
FROM Client, Séjour
WHERE nom = ’Kerouac’
AND id = idClient
nbreplaces
16
23) On souhaite consulter le nombre de places réservées, par client, pour les clients ayant
réservé plus de 10 places.
SELECT nom, SUM (nbPlaces) As nbrePlaces
FROM Client, Séjour
WHERE id = idClient
GROUP BY nom
HAVING SUM(nbPlaces) >= 10