© Éditions Eyrolles
109
chapitre n° 4
Interrogation des données
Regroupements
Cette section traite à la fois des regroupements de lignes (agrégats) et des fonctions de groupe
(ou multilignes). Nous étudierons les parties surlignées de l’instruction SELECT suivante :
SELECT [ { DISTINCT | DISTINCTROW } | ALL ] listeColonnes
FROM nomTable [ WHERE condition ]
[ clauseOrdonnancement ]
[ LIMIT [rangDépart,] nbLignes ] ;
q
listeColonnes : peut inclure des expressions (présentes dans la clause de regroupement) ou des fonctions de groupe.
q
clauseRegroupement : GROUP BY (expression1[,expression2]...) permet
de regrouper des lignes selon la valeur des expressions (colonnes, fonction, constante, calcul).
q
HAVING condition : pour inclure ou exclure des lignes aux groupes (la condition ne
peut faire intervenir que des expressions du GROUP BY).
q
ClauseOrdonnancement : déjà étudié (ORDER BY dans la section Projection/Ordonnancement).
Interrogeons la table suivante en composant des regroupements et en appliquant des fonctions
de groupe :
LEAST(expression[,
expression]...)
Retourne la plus petite des
expressions.
retourne 'Sarkozy'.
NULLIF(expr1,expr2) Si expr1 = expr2 retourne
NULL, sinon retourne expr1.
retourne 'Raffarine'.
IFNULL(expr1,expr2) Convertit expr1 susceptible
d’être nul en une valeur réelle
(expr2).
retourne 'Aucun !' si diplome est
NULL.
Tableau 4-24 Autres fonctions (suite)
Fonction
Objectif
Exemple
LEAST('Villepin','Sarkozy','XMen')
NULLIF('Raffarine','Parafine')
IFNULL(diplome,'Aucun !')
Figure 4-7 Table Pilote
[ clauseRegroupement ]
[ HAVING condition ]
Web
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-3
Richard Grin
1000
2001 -09-11
A320
SING
PL-4
Placide Fresnais 2450
500
2001 -09-21
A330
SING
PL-5
Daniel Vielle
400
600
1965 -01-16
A340
AF
PL-6
Francoise Tort
0
2000 -12-24
A340
CAST
109
chapitre n° 4
Interrogation des données
Regroupements
Cette section traite à la fois des regroupements de lignes (agrégats) et des fonctions de groupe
(ou multilignes). Nous étudierons les parties surlignées de l’instruction SELECT suivante :
SELECT [ { DISTINCT | DISTINCTROW } | ALL ] listeColonnes
FROM nomTable [ WHERE condition ]
[ clauseOrdonnancement ]
[ LIMIT [rangDépart,] nbLignes ] ;
q
listeColonnes : peut inclure des expressions (présentes dans la clause de regroupement) ou des fonctions de groupe.
q
clauseRegroupement : GROUP BY (expression1[,expression2]...) permet
de regrouper des lignes selon la valeur des expressions (colonnes, fonction, constante, calcul).
q
HAVING condition : pour inclure ou exclure des lignes aux groupes (la condition ne
peut faire intervenir que des expressions du GROUP BY).
q
ClauseOrdonnancement : déjà étudié (ORDER BY dans la section Projection/Ordonnancement).
Interrogeons la table suivante en composant des regroupements et en appliquant des fonctions
de groupe :
LEAST(expression[,
expression]...)
Retourne la plus petite des
expressions.
retourne 'Sarkozy'.
NULLIF(expr1,expr2) Si expr1 = expr2 retourne
NULL, sinon retourne expr1.
retourne 'Raffarine'.
IFNULL(expr1,expr2) Convertit expr1 susceptible
d’être nul en une valeur réelle
(expr2).
retourne 'Aucun !' si diplome est
NULL.
Tableau 4-24 Autres fonctions (suite)
Fonction
Objectif
Exemple
LEAST('Villepin','Sarkozy','XMen')
NULLIF('Raffarine','Parafine')
IFNULL(diplome,'Aucun !')
Figure 4-7 Table Pilote
[ clauseRegroupement ]
[ HAVING condition ]
Web
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-3
Richard Grin
1000
2001 -09-11
A320
SING
PL-4
Placide Fresnais 2450
500
2001 -09-21
A330
SING
PL-5
Daniel Vielle
400
600
1965 -01-16
A340
AF
PL-6
Francoise Tort
0
2000 -12-24
A340
CAST
