Partie I
SQL de base
112
© Éditions Eyrolles
q
La clause WHERE de la requête permet d’exclure des lignes pour chaque groupement, ou de
rejeter des groupements entiers. Elle s’applique donc à la totalité de la table.
q
La clause GROUP BY liste les colonnes du groupement.
q
La clause HAVING permet de poser des conditions sur chaque groupement.
q
La clause ORDER BY permet de trier le résultat (déjà étudiée).
Les colonnes présentes dans le SELECT doivent apparaître dans le GROUP BY. Seules des
fonctions ou expressions peuvent exister en plus dans le SELECT.
Les alias de colonnes ne peuvent pas être utilisés dans la clause GROUP BY.
Dans l’exemple suivant, en groupant sur la colonne compa, trois ensembles de lignes (groupements) sont composés. Il est alors possible d’appliquer des fonctions de groupe à chacun de
ces ensembles (dont le nombre n’est pas précisé dans la requête ni limité par le système qui
parcourt toute la table).
Il est aussi possible de grouper sur plusieurs colonnes (par exemple ici sur les colonnes compa
et typeAvion pour classifier les pilotes selon ces deux critères).
Utilisées avec GROUP BY, les fonctions s’appliquent désormais à chaque regroupement,
comme le montrent les exemples suivants :
Figure 4-8 Groupement sur la colonne compa
Tableau 4-27 Exemples de fonctions de groupe avec GROUP BY
Fonction
Exemples
AVG
Moyenne des heures de vol et des primes pour chaque compagnie.
SELECT compa, AVG(nbHVol), AVG(prime) FROM Pilote
;
+-------+-------------+------------+
| compa | AVG(nbHVol) | AVG(prime) |
+-------+-------------+------------+
| AF
| 283.333333 |
550.0000 |
| CAST |
NULL |
0.0000 |
| SING | 1725.000000 |
500.0000 |
+-------+-------------+------------+
Pilote
brevet nom
nbHVol prime embauche
typeAvion
compa
PL-1
Gratien Viel
450
500
1965 -02-05
A320
AF
PL-2
Didier Donsez
0
1995 -05-13
A320
AF
PL-5
Daniel Vielle
400
600
1965 -01-16
A340
AF
PL-6
Francoise Tort
0
2000-12-24
A340
CAST
PL-3
Richard Grin
1000
2001 -09-11
A320
SING
PL-4
Placide Fresnais 2450
500
2001-09-21
A330
SING
Web
GROUP BY(compa)
SQL de base
112
© Éditions Eyrolles
q
La clause WHERE de la requête permet d’exclure des lignes pour chaque groupement, ou de
rejeter des groupements entiers. Elle s’applique donc à la totalité de la table.
q
La clause GROUP BY liste les colonnes du groupement.
q
La clause HAVING permet de poser des conditions sur chaque groupement.
q
La clause ORDER BY permet de trier le résultat (déjà étudiée).
Les colonnes présentes dans le SELECT doivent apparaître dans le GROUP BY. Seules des
fonctions ou expressions peuvent exister en plus dans le SELECT.
Les alias de colonnes ne peuvent pas être utilisés dans la clause GROUP BY.
Dans l’exemple suivant, en groupant sur la colonne compa, trois ensembles de lignes (groupements) sont composés. Il est alors possible d’appliquer des fonctions de groupe à chacun de
ces ensembles (dont le nombre n’est pas précisé dans la requête ni limité par le système qui
parcourt toute la table).
Il est aussi possible de grouper sur plusieurs colonnes (par exemple ici sur les colonnes compa
et typeAvion pour classifier les pilotes selon ces deux critères).
Utilisées avec GROUP BY, les fonctions s’appliquent désormais à chaque regroupement,
comme le montrent les exemples suivants :
Figure 4-8 Groupement sur la colonne compa
Tableau 4-27 Exemples de fonctions de groupe avec GROUP BY
Fonction
Exemples
AVG
Moyenne des heures de vol et des primes pour chaque compagnie.
SELECT compa, AVG(nbHVol), AVG(prime) FROM Pilote
;
+-------+-------------+------------+
| compa | AVG(nbHVol) | AVG(prime) |
+-------+-------------+------------+
| AF
| 283.333333 |
550.0000 |
| CAST |
NULL |
0.0000 |
| SING | 1725.000000 |
500.0000 |
+-------+-------------+------------+
Pilote
brevet nom
nbHVol prime embauche
typeAvion
compa
PL-1
Gratien Viel
450
500
1965 -02-05
A320
AF
PL-2
Didier Donsez
0
1995 -05-13
A320
AF
PL-5
Daniel Vielle
400
600
1965 -01-16
A340
AF
PL-6
Francoise Tort
0
2000-12-24
A340
CAST
PL-3
Richard Grin
1000
2001 -09-11
A320
SING
PL-4
Placide Fresnais 2450
500
2001-09-21
A330
SING
Web
GROUP BY(compa)
