Livre_silo 30 août 2013 16:32 Page 291
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
291
11 – Base de données relationnelle
Exercice 11.6 Traduire dans le langage SQL les recherches effectuées dans l’exercice 11.3.
1
SELECT client FROM nuitee JOIN lit ON lit=idlit WHERE batlit = 'Jasmin';
ou encore
SELECT client FROM nuitee, lit WHERE lit=idlit AND batlit = 'Jasmin';
2
SELECT client FROM nuitee, lit, batiment
WHERE lit=idlit AND batlit=batiment AND etoiles=2;
3
SELECT client FROM nuitee, lit, chambre
WHERE lit=idlit AND batlit=batiment AND chambre=numero AND fenetres>=2;
11.3.2 Application simple d’une fonction d’agrégation
Pour calculer γ f (A) (R), on utilise là encore une projection spéciale :
SELECT f(A) FROM R;
Le tableau suivant fournit la correspondance entre les fonctions d’agrégation que l’on a
vues et celles de SQL :
Algèbre relationnelle
SQL
comptage
COUNT
max
MAX
min
MIN
somme
SUM
moyenne
AVG
Il est possible de coupler ce calcul à une projection, comme on l’a vu précédemment, par
exemple :
SELECT max(note) AS note FROM eleve WHERE classe=1;
Le résultat renvoyé par l’agrégation étant de type numérique, il est possible de l’utiliser
dans des comparaisons. Donc, pour obtenir les élèves ayant obtenu plus que la moyenne
de la classe, on écrit :
SELECT * FROM eleves WHERE note >= (SELECT avg(note) FROM eleves);
Exercice 11.7 Traduire en langage SQL les requêtes écrites à l’exercice 10.4.
1
SELECT avg(note) FROM eleve WHERE classe=3;
2
SELECT nom, prenom, classe, note FROM eleve JOIN classe ON classe=id WHERE filiere='MPSI';
3 La première requête est la suivante, dans laquelle on renomme moyenne(Note) pour pouvoir y faire
référence par la suite :
SELECT classe, avg(note) AS moyenne FROM eleve GROUP BY classe;
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
291
11 – Base de données relationnelle
Exercice 11.6 Traduire dans le langage SQL les recherches effectuées dans l’exercice 11.3.
1
SELECT client FROM nuitee JOIN lit ON lit=idlit WHERE batlit = 'Jasmin';
ou encore
SELECT client FROM nuitee, lit WHERE lit=idlit AND batlit = 'Jasmin';
2
SELECT client FROM nuitee, lit, batiment
WHERE lit=idlit AND batlit=batiment AND etoiles=2;
3
SELECT client FROM nuitee, lit, chambre
WHERE lit=idlit AND batlit=batiment AND chambre=numero AND fenetres>=2;
11.3.2 Application simple d’une fonction d’agrégation
Pour calculer γ f (A) (R), on utilise là encore une projection spéciale :
SELECT f(A) FROM R;
Le tableau suivant fournit la correspondance entre les fonctions d’agrégation que l’on a
vues et celles de SQL :
Algèbre relationnelle
SQL
comptage
COUNT
max
MAX
min
MIN
somme
SUM
moyenne
AVG
Il est possible de coupler ce calcul à une projection, comme on l’a vu précédemment, par
exemple :
SELECT max(note) AS note FROM eleve WHERE classe=1;
Le résultat renvoyé par l’agrégation étant de type numérique, il est possible de l’utiliser
dans des comparaisons. Donc, pour obtenir les élèves ayant obtenu plus que la moyenne
de la classe, on écrit :
SELECT * FROM eleves WHERE note >= (SELECT avg(note) FROM eleves);
Exercice 11.7 Traduire en langage SQL les requêtes écrites à l’exercice 10.4.
1
SELECT avg(note) FROM eleve WHERE classe=3;
2
SELECT nom, prenom, classe, note FROM eleve JOIN classe ON classe=id WHERE filiere='MPSI';
3 La première requête est la suivante, dans laquelle on renomme moyenne(Note) pour pouvoir y faire
référence par la suite :
SELECT classe, avg(note) AS moyenne FROM eleve GROUP BY classe;
