Si vous utilisez les fonctions de groupement avec une requête
ne contenant pas de clause GROUP BY
, cela
revient à grouper toutes les lignes.
AVG(expr)
Retourne la moyenne de l'expression
expr
:
mysql>SELECT student_name, AVG(test_score)
->FROM student
->GROUP BY student_name;
Retourne la combinaison AND
bit à bit de
expr
. Le calcul est fait en précision de
64 bits (BIGINT
).
Depuis MySQL 4.0.17, cette fonction retourne
18446744073709551615 s'il n'y avait pas de lignes. (C'est un
entier BIGINT
non-signé, dont tous les
bits sont à 1.) Avant 4.0.17, la fonction retournait -1
s'il n'y avait pas de ligne trouvées.
Retourne la combinaison OR
bit à bit de
expr
. Le calcul est fait en précision de
64 bits (BIGINT
).
Cette fonction retourne 0 s'il n'y a pas de ligne à traiter.
Retourne la combinaison XOR
bit à bit de
expr
. Le calcul est fait en précision de
64 bits (BIGINT
).
Cette fonction retourne 0 s'il n'y a pas de ligne à traiter.
Cette fonction est disponible depuis MySQL 4.1.1.
Retourne le nombre de valeurs non-NULL
dans les lignes lues par la commande
SELECT
:
mysql>SELECT student.student_name,COUNT(*)
->FROM student,course
->WHERE student.student_id=course.student_id
->GROUP BY student_name;
COUNT(*)
est un peu différente dans son
action, car elle retourne le nombre de lignes, même si
elles contiennent NULL
.
COUNT(*)
est optimisée pour retourner
très rapidement un résultat si SELECT
travaille sur une table, qu'aucune autre colonne n'est lue,
et qu'il n'y a pas de clause WHERE
. Par
exemple :
mysql> SELECT COUNT(*) FROM student;
Cette optimisation s'applique uniquement pour les tables
MyISAM
et ISAM
, car un
compte exact du nombre de lignes est stocké pour ces types
de tables, et il peut être lu très rapidement. Pour les
moteurs de tables transactionnels,
(InnodB
, BDB
), le
stockage de cette valeur est plus problématique, car
plusieurs transactions peuvent survenir en même temps, et
affecter toutes ce compte.
COUNT(DISTINCT expr,[expr...])
Retourne le nombre de valeurs non-NULL
distinctes :
mysql> SELECT COUNT(DISTINCT results) FROM student;
Avec MySQL, vous pouvez lire le nombre d'expression
distinctes qui ne contiennent pas NULL
,
en pla¸ant ici une liste d'expression. Avec SQL-99, vous
devriez faire une concaténation de toutes les expressions
dans COUNT(DISTINCT ...)
.
Syntaxe complète :
GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ...]] [SEPARATOR str_val])
Cette fonction a été ajoutée en MySQL version 4.1. Elle retourne la chaîne résultant de la concaténation de toutes les valeurs du groupe :
mysql>SELECT student_name,
->GROUP_CONCAT(test_score)
->FROM student
->GROUP BY student_name;
ou :
mysql>SELECT student_name,
->GROUP_CONCAT(DISTINCT test_score
->ORDER BY test_score DESC SEPARATOR " ")
->FROM student
->GROUP BY student_name;
Avec MySQL, vous pouvez obtenir la concaténation d'une
série d'expressions. Vous pouvez éliminer les doublons en
utilisant DISTINCT
. Si vous voulez trier
les valeurs du résultat, il faut utiliser ORDER
BY
. Pour trier en ordre inverse, ajoutez le mot
clé DESC
(descendant) au nom de la
colonne que vous triez dans la clause ORDER
BY
. Par défaut, l'ordre est ascendant. Cela peut
être spécifié explicitement avec le mot clé
ASC
. SEPARATOR
est une
chaîne qui sera insérée entre chaque valeur du résultat.
La valeur par défaut est une virgule
‘","
’. vous pouvez supprimer
le séparateur en spécifiant la chaîne vide
SEPARATOR ""
.
Vous pouvez donner une taille maximale à la variable
group_concat_max_len
de votre
configuration. La syntaxe pour faire cela durant
l'exécution est :
SET [SESSION | GLOBAL] group_concat_max_len = unsigned_integer;
Si une taille maximale a été atteinte, le résultat sera tronqué à cette taille maximale.
Note : il y a encore de petites limitations pour
GROUP_CONCAT()
lorsqu'il faut utiliser
des valeurs DISTINCT
avec ORDER
BY
et et en utilisant les valeurs
BLOB
. Voyez Section 1.5.7.4, « Bugs connus / limitations de MySQL ».
GROUP_CONCAT()
a été ajoutée en MySQL
4.1.
Retourne le minimum ou le maximum de
expr
. MIN()
et
MAX()
peuvent prendre des chaînes comme
argument : dans ce cas, elles retournent la valeur minimale
ou maximale de la valeur de la chaîne. See
Section 7.4.5, « Comment MySQL utilise les index ».
mysql>SELECT student_name, MIN(test_score), MAX(test_score)
->FROM student
->GROUP BY student_name;
Actuellement, MIN()
,
MAX()
et d'autres fonctions d'agrégation
MySQL, le serveur compare les valeurs de type
ENUM
et SET
avec leur
valeur de chaîne, et non pas leur position relative dans
l'ensemble. Ce sera corrigé.à
Retourne la déviation standard de expr
(la racine carrée de la VARIANCE()
. Ceci
est une extension au standard SQL 99. La forme
STDDEV()
de cette fonction est fournie
pour assurer la compatibilité Oracle.
Retourne la somme de expr
. Notez que si
le résultat ne contient pas de ligne, cette fonction
retournera NULL
.
Retourne la variance standard de l'expression
expr
(en considérant que les lignes
forment une population totale, et non pas un échantillon.
Le nombre de ligne est le dénominateur. C'est une extension
à la norme SQL-99 (disponible en version version 4.1 ou
plus récent).
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.