© Your Copyright
L’objectif de ces exercices est de savoir regrouper le informations et appliquer des fonctions d’agrégat sur ces regroupements « Aux pays des bières ».
- Ecrire une requête SQL répondant à la question
- \(Q_1\) : « Rechercher le nom, la couleur des bières et leur quantité en stock dans la base de données ».
On fait un regroupement (
GROUP BY
) par nom de bières (biere
) et leurcouleur
qui sont servies (\(\Join_{[]}(services, bieres)\)).
On récupère dans le résultat final les attribut de groupement (code:nom,couleur) et on calcule sur ces regroupements la somme des quantités servies (code:SUM(stock)).
Ecriture en algèbre relationnelle :
- \(NJ = \Join_{[]}(services, bieres)\).
- \(G = G_{[]}^{(biere, couleur,SUM(stock))}(NJ_1)\).
Ecrire une requête SQL répondant à la question :
- \(Q_1\) : « Rechercher le nom des bars, le nombre de bières qu’ils servent et la somme de leur stocks pour les bars qui servent au moins deux bières ».
On fait un regroupement (GROUP BY
) par bar
servant des bières.
On ne retient (HAVING
) dans ce regroupement que les bars qui servent au moins 2 bières différentes.
On récupère dans le résultat final le nom des bars, leur nombre de bières et la quantité totale (bar,COUNT(id_biere),SUM(stock)
)
servie dans ces bars.
Ecriture en algèbre relationnelle :
- \(NJ = \Join_{[]}(services, bars)\).
- \(G = G_{[COUNT(id_biere) > 1]}^{(bar,COUNT(id_biere),SUM(stock))}(NJ)\).
Ecrire une requête SQL répondant à la question
- \(Q_1\) : « Rechercher le nom des pays, le nombre de toutes les bières servies dans ces pays et la somme de leurs stocks, pour les pays dont la quantité de bières est supérieure à la moyenne des stocks mondiaux ».
On fait un regroupement (GROUP BY
) par nom de pays
des bars servant des bières.
On ne retient dans ces regroupements que les pays
dont la somme des stock
de bières de leurs bars est supérieure à la moyenne des stocks mondiaux.
On obtient dans le résultat final le nom des pays, le nombre de bières et la somme des stock
servies dans ces pays
.
Ecriture en algèbre relationnelle :
- \(NJ = \Join_{[]}(services, bars)\).
- \(G = G_{[SUM(stock)> (SELECT AVG( stock ) FROM services)]}^{(pays,COUNT(id\_biere),SUM(stock))}(NJ)\).
Ecrire une requête SQL répondant à la question
- \(Q_1\) : « Rechercher le nom des bars, le nombre de toutes les bières servies dans ces bars et la somme de leurs stocks, pour les bars de “France” ou des “USA” servant plus d’une bière ».
On vérifie d’abord que nous sommes bien en “France” ou au “USA” :
- \(R = \sigma{[pays ='France' OR pays='USA']}(bars)\)
On récupère lmes services de bars de ces deuc pays
- \(NJ = \Join{[]}(services,R)\)
Puis on fait un regroupement (GROUP BY
) par nom (bar
) de bars.
On ne retient dans ce regroupement que les :code:`bars ` dont le nombre de de bières de leurs bars est supérieure à la moyenne des stocks mondiaux.
On obtient dans le résultat final le nom des pays, le nombre de bières est au moins égal à deux.
On récupère dans le résultat final le nom des bars, le nombre (COUNT()
) de bières qu’ils servent et la somme (SUM()
) des stock
de bières
servies dans ces bars
- \(G = G_{[SUM(stock)> (SELECT COUNT (id_biere) > 1)]}^{(bar,COUNT(id\_biere),SUM(stock))}(NJ)\).