Académique Documents
Professionnel Documents
Culture Documents
Exercice n° 53
Description
Public(s) Section de Terminale STT informatique de gestion
Savoir(s) 3.2.2 Le(s) langage(s) de manipulation de données
Capacité(s) Être capable de :
– écrire une requête SQL avec la fonction de calcul « compte »
– écrire une requête SQL avec la fonction de calcul « compte » sur
un regroupement
Objectif(s) Présenter la fonction de calcul « compte » par l’exemple et mettre en
application cette nouvelle notion
Fichier Exonet53.zip
Auteur(s) Séverine QUESQUE
Énoncé
Contexte de travail
LOCAFLOT est une société de location d’embarcations de différents types : des
barques (avec rames !), des jets-skis, des bateaux à moteur et des pédalos. Ces
embarcations sont louées par demi-heure, à l’heure, par demi-journée ou à la
journée.
Pierrot VAGUE gère ces locations grâce à un système de gestion de base de
données relationnelles. Ainsi, lorsqu’un client se présente, il interroge sa base de
données pour consulter immédiatement les embarcations disponibles, les retards,
etc. Mais, dans certains cas, les informations nécessaires ne se trouvent pas
clairement dans la base de données : par exemple, un client, responsable d’un
centre aéré, lui a demandé ce matin s’il était possible de louer 3 pédalos doubles et 2
pédalos toboggans pour la journée. Pierrot a fait des requêtes et a compté le nombre
de pédalos qui apparaissaient à l’écran : heureusement qu’il n’y avait pas 100
lignes !
Pierrot ne savait pas qu’il avait la possibilité de faire une requête pour afficher
directement le nombre qu’il recherchait. Vous allez l’aider …
Travail à Réaliser
Question 1 :
CERTA DIJON
2
Question 2 :
SELECT count(numembarcation)
FROM embarcation
WHERE couleur = “blanc”;
Question 3 :
Question 4
CERTA DIJON
3
Question 5 :
Le nombre d’embarcations par type est l’information recherchée. Est-ce qu’on peut
lire directement cette information dans une table existante ?
Question 6 :
Dans cette requête, quelle nouvelle clause apparaît dans l’instruction SQL SELECT?
En vous aidant des questions posées au point 5, expliquez à quoi sert cette clause.
Question 7
Le nombre
d’embarcations par
couleur
CERTA DIJON
4
Le nombre Barque 5
d’embarcations par nom bateau à moteur 3
de type d’embarcation jet ski 5
pédalo double 8
pédalo simple 10
pédalo toboggan 7
Conclusion : Dans quel cas faire un calcul avec un regroupement ? Quelle est la
syntaxe à respecter en SQL ?
Exercice d’application
Écrire les requêtes SQL qui permettent de répondre aux questions suivantes :
1. Le nombre d’embarcations disponibles dont le tarif horaire est inférieur à 100
FFR.
2. Le nombre de locations réalisées par journée.
3. Le nombre d’embarcations de type « jet-ski » à une place.
4. La quantité d’embarcations disponibles possédant 2 places au maximum, par
CERTA DIJON
5
Annexes
CERTA DIJON
6
ANNEXE 2 : Extraits des tables
Table « embarcation »
numembarcation couleur disponible codetype P107 bleu Oui P1
B101 vert Oui B1 P108 jaune Non P1
B102 blanc Oui B1 P109 rouge Oui P1
B103 jaune Non B1 P110 jaune Oui P1
B201 blanc Non B2 P201 rouge Non P2
B202 rouge Oui B2 P202 jaune Oui P2
J101 multicolore Oui J1 P203 blanc Non P2
J102 blanc Non J1 P204 blanc Oui P2
J103 blanc Oui J1 P205 bleu Oui P2
J201 jaune Non J2 P206 violet Non P2
J202 blanc Oui J2 P207 blanc Oui P2
M101 jaune Oui M1 P208 jaune Oui P2
M102 blanc Non M1 P301 blanc Non P3
M103 blanc Non M1 P302 rouge Oui P3
P101 blanc Oui P1 P303 rouge Non P3
P102 blanc Oui P1 P304 jaune Oui P3
P103 jaune Non P1 P305 bleu Oui P3
P104 bleu Oui P1 P306 bleu Non P3
P105 rouge Non P1 P307 bleu Non P3
P106 blanc Oui P1
Table « typembarcation »
codetype nomtype nbplace prix demi-heure prix heure prix demi-journée prix journée
B1 barque 2 15 25 80 150
B2 barque 4 30 50 140 200
J1 jet-ski 1 80 150 300 500
J2 jet-ski 2 120 250 400 700
M1 bateau à moteur 4 100 200 400 800
P1 pédalo simple 2 30 55 150 250
P2 pédalo double 4 40 75 170 280
P3 pédalo toboggan 6 45 80 180 300
CERTA DIJON
7
Correction
Prérequis : requêtes SQL avec opérateurs projection, sélection et jointure (tri : facultatif).
Les questions posées aux points 2 et 5 doivent être réutilisées par les élèves
ensuite :
– pour déterminer si le résultat est obtenu grâce à un calcul (sur quelle table),
– pour déterminer l’opération à appliquer (ne pas confondre compter 1 et
additionner – cf. cases à cocher –),
– pour savoir s’il faut faire un regroupement ou non.
–
–
–
– Question 1 :
–
– À partir des annexes 1 et 2, répondre aux questions suivantes en
justifiant par un exemple :
–
– Cette question a pour objectif de faire découvrir aux élèves la structure et le
contenu de la base de données.
– Une location peut-elle concerner plusieurs embarcations ?
– Oui. Par exemple, la location n° 4 concerne l’embarcation J202 et
l’embarcation M101.
– Le nombre de personnes montant dans une embarcation louée correspond-
elle toujours au nombre de places de l’embarcation ?
– Non. Par exemple, pour la location n° 1 qui concerne l’embarcation P101, de
type P1, le nombre maximum de places est de 2 et le nombre de personnes
montant dans l’embarcation est de 1.
– Une embarcation correspond-elle toujours à un seul type d’embarcation ?
1
Le professeur peut utiliser le verbe « dénombrer » à la place de « compter » et le substantif
« dénombrement » à la place de « comptage ». Ce sont des termes plus précis d’un point de vue
mathématique mais il n’est pas certain qu’ils soient bien compris par les élèves.
CERTA DIJON
8
– Oui. C’est ce que révèle la structure de la table « embarcation » : à une
embarcation, correspond un et un seul type. Chaque ligne de la table
« embarcation » peut donc servir d’exemple.
– La couleur de l’embarcation dépend-elle du type d’embarcation ?
– Non, puisqu’il y a une couleur par embarcation (contre-exemple : pour le type
B1, on trouvera des embarcations vertes, blanches, jaunes, ...)
– Quel attribut permet de savoir si une embarcation peut être louée ?
– C’est l’attribut « disponible », de type booléen. L’embarcation B101 peut être
louée, l’embarcation B103 non.
–
– Question 2 :
–
– En regardant le contenu des tables, trouvez le nombre d’embarcations
blanches.
–
– Les élèves en sont réduits à compter « manuellement » dans la table
« embarcation » : il y a 14 embarcations blanches.
–
– Quelle table utilisez-vous pour obtenir le résultat ?
–
– Les élèves constatent qu’ils obtiennent le résultat précédent à partir de
la table « embarcation ».
–
– Le nombre d’embarcations blanches est l’information recherchée. Est-ce
qu’on peut lire directement cette information dans une table existante ?
–
– Non, l’information demandée ne se trouve pas directement dans une
table mais elle peut être obtenue grâce à un calcul.
–
– Parmi les propositions suivantes, lesquelles correspondent à votre façon
d’obtenir le résultat ?
– Compter le nombre de lignes pour lesquelles la couleur est « blanc ».
– Compter les numéros des embarcations blanches.
–
– Question 3 :
–
– Indiquez quelle fonction de calcul SQL permet de compter :
–
– Les élèves analysent la requête SQL et, sachant que le résultat de cette
requête est le nombre d’embarcations blanches (14, résultat trouvé précédemment),
ils en concluent que la fonction « count » permet de compter.
–
– Conclusion : A compléter avec les élèves après la partie découverte ou
après la partie application.
–
– Dans certains cas, l’information à obtenir ne correspond pas directement à un
champ d’une table mais résulte d’un calcul sur une colonne. Dans ce cas, il faut
utiliser une fonction de calcul. Si l’information à obtenir correspond à un comptage, la
CERTA DIJON
9
fonction de calcul SQL est « count ». Les autres critères de sélection, projection,
jointure restent identiques.
–
– Question 5 :
–
– En analysant le contenu des tables, trouvez le nombre d’embarcations par
type d’embarcation
–
– –
– –
– –
– –
– –
1
– –
– –
– –
–
– Quelle table utilisez-vous pour obtenir le résultat ?
–
– Les élèves constatent qu’ils obtiennent le résultat précédent à partir de la table
embarcation.
CERTA DIJON
10
–
CERTA DIJON
11
– Combien de lignes obtenez-vous dans la table résultat ? Combien de
colonnes ?
– La table résultat comporte 8 lignes : 1 ligne par type d’embarcation.
– La table résultat comporte 2 colonnes.
– R/ faire remarquer à l’élève que, précédemment, nous obtenions un seul
résultat par requête.(une seule ligne / une seule colonne)
–
– Le nombre d’embarcations par type est l’information recherchée. Est-ce
qu’on peut lire directement cette information dans une table existante ?
–
– Non, l’information demandée ne se trouve pas directement dans la table mais
elle peut être obtenue grâce à un calcul.
–
– Parmi les propositions suivantes, lesquelles correspondent à votre
façon d’obtenir le résultat ?
–
– Regrouper les lignes par code type et compter le nombre d’embarcations
correspondantes.
– Compter le nombre d’embarcations par code type.
–
– Question 6 :
–
– Dans cette requête, quelle nouvelle clause apparaît dans l’instruction
SQL SELECT ?
–
– La nouvelle clause SQL est « group by ».
–
– En vous aidant des questions posées au point 5, expliquez à quoi sert cette
clause.
– Le résultat recherché nécessite d’opérer un regroupement par type
d’embarcation, ce que permet la clause « group by codetype ».
–
– Conclusion : A compléter avec les élèves après la partie découverte ou
après la partie application.
–
– Lorsqu’un calcul doit être fait en regroupant d’abord des informations, puis en
effectuant le calcul sur chacun des groupes obtenus, il faut utiliser la clause SQL
« group by ».
– Le regroupement se fait obligatoirement sur tous les champs projetés (sauf la
fonction de calcul) : « Tous les champs du « group by » se trouvent dans le
« select ».
– La clause « group by » est inutile dans le cas où :
– il n’y a pas de fonction de calcul utilisée,
– un seul résultat est attendu.
– Une seule valeur résultat (ex : 14) à pas de « group by »
–
– Plusieurs valeurs avec un ou plusieurs champs correspondants (ex : b3, 1)
à group by
–
CERTA DIJON
12
–
CERTA DIJON
13
CERTA DIJON
14
CERTA DIJON
15
4. La quantité d’embarcations disponibles de 2 places maximum, par type
d’embarcation. La requête doit afficher le nom du type d’embarcation, le
prix de la location à la demi-heure et le nombre d’embarcations
disponibles.
– SELECT nomtype, prixdemi-heure, count(numembarcation)
– FROM embarcation, typembarcation
– WHERE embarcation.codetype = typembarcation.codetype
– AND disponible = « Oui » AND nbplace <= 2
– GROUP BY nomtype, prixdemi-heure ;
–
– Table résultat correspondant à cette requête :
– nom – prixde – n
type mi-heure b emb
– barq – 15 – 2
ue
– jet- – 80 – 2
ski
– jet- – 120 – 1
ski
– péda – 30 – 7
lo simple
–
5. Le nombre d’embarcations par type(nom) avec pour chaque type, le nombre
de places. Le résultat sera présenté par ordre croissant du nombre
d’embarcations.
– SELECT nomtype, nbplace, count(numembarcation)
– FROM embarcation, typembarcation
– WHERE embarcation.codetype = typembarcation.codetype
– GROUP BY nomtype, nbplace
– ORDER BY count(numembarcation) ;
–
– Table résultat correspondant à cette requête :
– nomty – n– n
pe bplace b emb
– jet-ski – 2– 2
– barque – 4– 2
– jet-ski – 1– 3
– bateau – 4– 3
à moteur
– barque – 2– 3
– pédalo – 6– 7
toboggan
– pédalo – 4– 8
double
CERTA DIJON
16
– pédalo – 2– 1
simple 0
–
–
CERTA DIJON