Fonctions à utiliser dans les clauses SELECT et WHERE
<<<
Fonctions avec GROUP BY Options de GROUP BY
>>>

13.9 Fonctions et options à utiliser dans les clauses GROUP BY
13 Fonctions à utiliser dans les clauses SELECT et WHERE
 Manuel de Référence MySQL 4.1 : Version Française

->Fonctions avec GROUP BY
Options de GROUP BY
GROUP BY avec les champs cachés

13.9.1 Fonctions avec GROUP BY

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;
    BIT_AND(expr)
    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.

    BIT_OR(expr)
    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.

    BIT_XOR(expr)
    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.

    COUNT(expr)
    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 ...) .

    GROUP_CONCAT(expr)
    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 Bugs ouverts / limitations de MySQL .

    GROUP_CONCAT() a été ajoutée en MySQL 4.1.

    MIN(expr)
    MAX(expr)
    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. 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é.à

    STD(expr)
    STDDEV(expr)
    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.

    SUM(expr)
    Retourne la somme de expr . Notez que si le résultat ne contient pas de ligne, cette fonction retournera NULL .

    VARIANCE(expr)
    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).

<< Fonctions avec GROUP BY >>
Fonctions à utiliser dans les clauses SELECT et WHERE Fonctions et options à utiliser dans les clauses GROUP BY Options de GROUP BY