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

TD03 - SQL

Le document présente un exercice de QCM sur les requêtes SQL, où chaque question demande de choisir la requête correcte parmi plusieurs versions. Les questions portent sur des aspects tels que la sélection de forfaits, la désignation de clients, et le calcul de sommes ou moyennes. Chaque question est accompagnée d'une explication sur la validité ou l'invalidité des requêtes proposées.

Transféré par

lammouchi
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)
33 vues3 pages

TD03 - SQL

Le document présente un exercice de QCM sur les requêtes SQL, où chaque question demande de choisir la requête correcte parmi plusieurs versions. Les questions portent sur des aspects tels que la sélection de forfaits, la désignation de clients, et le calcul de sommes ou moyennes. Chaque question est accompagnée d'une explication sur la validité ou l'invalidité des requêtes proposées.

Transféré par

lammouchi
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

Exercice 7 : QCM - Reconnaître les bonnes requêtes

@ Mémento SQL : Éventuellement

Objectifs  #BWd]W][IGB
¸?dj[hhe]Wj_edZ[iZeddƒ[i

1. Liste des forfaits qui coûtent 24,99 au plus :

Version 1 Version 2 Version 3


SELECT designF SELECT designF SELECT designF
FROM Forfait FROM Forfait FROM Forfait
WHERE prixF<24,99 WHERE prixF<=24,99 WHERE prixF>24,99
“au plus“ inclut le 24,99 CORRECT “au plus“ et non “ou plus“

2. Désignation du forfait portant la référence F1 (choisir la requête correcte) :

Version 1 Version 2 Version 3


SELECT designF SELECT designF SELECT designF
FROM Forfait FROM Forfait, Client FROM Forfait
WHERE refF=“F1“ WHERE refF=refFSouscrit WHERE refF=F1
AND refF=“F1“
CORRECT La jointure avec la table CLIENT est Il manque les guillemets sur le critère
inutile et elle fera apparaître la même de restriction de type texte
désignation autant de fois que le for-
fait a été souscrit (ici 2 fois)

3. Désignation du forfait souscrit par le client n° 3 (choisir la requête correcte) :

Version 1 Version 2 Version 3


SELECT designF SELECT designF SELECT designF
FROM Forfait, Client FROM Forfait FROM Forfait, Client
WHERE refF=refFSouscrit WHERE numCl=3 WHERE refF=refFSouscrit
AND refF=“F2“ AND numCl=3
Ici la référence du client n’apparaît pas numCl n’est pas disponible dans la CORRECT
mais la référence de son forfait qu’on table FORFAIT, il faut aussi ajouter la
ne connaît pas (à moins d’aller lire table CLIENT dans la clause FROM et
dans les tables, ce qui est contraire au faire une équi-jointure entre les deux
principe de faire effectuer la requête tables
par le SGBDR), et la désignation appa-
raîtra autant de fois que le forfait a été
souscrit

4. Liste des anciens clients qui ont résilié leur abonnement :

Version 1 Version 2 Version 3


SELECT numCl, nomCl SELECT designF SELECT numCl, nomCl
FROM Forfait, Client FROM Forfait, Client FROM Client
WHERE refF=refFSouscrit WHERE refF=refFSouscrit WHERE refFSouscrit IS NULL
AND refFSouscrit IS NULL AND prixF=0
L’utilisation de la jointure conduit à Le prix est défini dans la table FOR- CORRECT
projeter les clients qui ont souscrit un FAIT indépendamment du client
forfait (malgré le deuxième critère)

5. Déterminez l’information délivrée par cette requête :

SELECT SUM(prixF) ฀1. les prix payés par les clients ayant souscrit le forfait F2
FROM Forfait, Client ฀2. le nombre de clients ayant souscrit le forfait F2
WHERE refF=refFSouscrit
AND refF=“F2“ ฀฀3. le chiffre d’affaires mensuel réalisé avec les clients ayant CORRECT
souscrit le forfait F2

106
Chapitre B13 : Langage d’interrogation de données

6. Déterminez le résultat délivré par la requête suivante :

Version 1 Version 2 Version 3


SELECT refF, SUM(PrixF) F1 39,98 1 19,99 F1 19,99
FROM Forfait, Client
F2 24,99 4 19,99 F2 24,99
WHERE refF=refFSouscrit
F3 14,99 3 24,99 F3 14,99
GROUP BY refF
ORDER BY refF 2 14,99

CORRECT Les montants sont pré- Aucune somme n’a été


sentés et triés par client effectuée
sans somme

7. Nombre de clients du forfait «F2» (choisir la requête correcte) :

Version 1 Version 2 Version 3


SELECT COUNT(refF) SELECT COUNT(refFSouscrit) SELECT COUNT(refFSouscrit)
FROM Forfait, Client FROM Client FROM Client
WHERE refF=refFSouscrit GROUP BY refFSouscrit=“F2“ WHERE refFSouscrit=“F2“
HAVING refF=“F2“
La clause HAVING s’utilise pour une Aucun regroupement nécessaire (il ne CORRECT
restriction d’affichage sur le résultat peut y avoir qu’un seul résultat);
d’une opération ; de plus la table for- pas de critère dans un regroupement
fait n’est pas nécessaire

8. Choisissez la requête délivrant le résultat suivant :

Version 1 Version 2
SELECT AVG(prixF) SELECT AVG(prixF)
MoyenneDePrix FROM Forfait, Client FROM Forfait, Client
22,49 WHERE refF=refFSouscrit WHERE refF=refFSouscrit
AND telCl LIKE “01%“ GROUP BY telCl
CORRECT Ici, il y aurait un prix par numéro de té-
léphone (donc autant que de clients)

9. Liste alphabétique des clients de chaque forfait (choisir la requête correcte) :

Version 1 Version 2 Version 3


SELECT numCl, nomCl SELECT designF, numCl, nomCl SELECT refFsouscrit,
FROM Client FROM Forfait, Client numCl, nomCl
GROUP BY refFSouscrit WHERE refF=refFSouscrit FROM Client
ORDER BY numCl ORDER BY refFSouscrit, NomCl ORDER BY nomCl,
refFSouscrit
Aucun regroupement sans opération CORRECT L’ordre du tri est incorrect

10. Déterminez l’information délivrée par chacune des requêtes suivantes :

Version 1 Version 2 Version 3


SELECT refF, SUM(prixF) AS CA SELECT refF, SUM(prixF) AS CA SELECT refF, COUNT(numCl) AS
FROM Forfait, Client FROM Forfait, Client nbClients
WHERE refF=refFSouscrit WHERE refF=RrefFSouscrit FROM Forfait, ClientT
GROUP BY refF GROUP BY refF WHERE refF=refFSouscrit
ORDER BY CA DESC HAVING COUNT(numCl)>5000 GROUP BY refF
HAVING nbClients>5000
Chiffre d’affaires réalisé pour chaque Chiffre d’affaires des forfaits comptant Nombre de clients des forfaits comptant
forfait par ordre décroissant des chif- plus de 5 000 clients plus de 5 000 clients
fres d’affaires

107
11. Associez chaque requête à son intitulé ; un des intitulés n’est pas utile car une des requêtes est inexacte :

R1 SELECT MIN(prixF) a Liste des clients de province ou de ceux qui ont R1-e
FROM Forfait souscrit un forfait F3.
WHERE designF LIKE “%ADSL%“
R2 SELECT MIN(prixF) b Le prix forfait le moins cher entre F1 et F3. R2-g
FROM Forfait
HAVING prixF < 25
R3 SELECT MIN(prixF) c Désignation du forfait le moins cher. R3-b
FROM Forfait
WHERE refF IN (“F1“,“F3“)
R4 SELECT designF d Liste de tous les clients de province et de ceux R4-c
FROM Forfait d’Ile-de-France qui ont souscrit un forfait F3.
WHERE prixF=(SELECT MIN(prixF) FROM Forfait)
R5 SELECT numCl, nomCl e Prix du forfait le moins cher comportant le mot
FROM Client « ADSL » dans sa désignation. R5-d
WHERE telCl NOT LIKE “01%“
OR (refFSouscrit=“F3“ AND telCl LIKE “01%“)
R6 SELECT numCl, nomCl f Prix des forfaits coûtant moins de 25 euros.
FROM Client
WHERE telCl NOT LIKE “01%“ R6-a
OR RefFSouscrit=“F3“
g Requête inexacte.

R2

108

Vous aimerez peut-être aussi