Services webmasters
Partenaires
Jeux concours gratuits
 
Autres fonctions
<<<
Fonctions avec la clause GROUP BY Référence du langage MySQL
>>>

6.3 Fonctions à utiliser dans les clauses SELECT et WHERE
6 Référence du langage MySQL
 Manuel de Référence MySQL 4.1 : Version Française

Opérateurs et fonctions tout-types
Fonctions de chaînes de caractères
Fonctions numériques
Fonctions de dates et d'heures
Fonctions de transtypage
Autres fonctions
->Fonctions avec la clause GROUP BY

6.3.7 Fonctions avec la clause GROUP BY

Si vous utilisez une fonction de groupement avec une commande qui n'utilise pas la clause GROUP BY , cela revient à regrouper toutes les lignes ensembles.

    COUNT(expr)
    Retourne le nombre de valeurs non-nulles ( NULL ) dans les lignes lues par la commande SELECT :
    
    mysql> SELECT etudiant.nom_etudiant,COUNT(*)
        ->        FROM etudiant,course
        ->        WHERE etudiant.id_etudiant=course.id_etudiant
        ->        GROUP BY nom_etudiant;
    COUNT(*) est légèrement différent car il retourne le nombre de lignes lues, qu'elles contiennent ou pas la valeur NULL . COUNT(*) est optimisé pour retourner très rapidement le résultat si la commande SELECT n'opère que sur une table, qu'aucune autre valeur n'est calculée en même temps, et qu'il n'y a pas de clause WHERE . Par exemple :
    
    mysql> SELECT COUNT(*) FROM etudiant;
    
    COUNT(DISTINCT expr,[expr...])
    Retourne le nombre de lignes ayant des valeurs distinctes non-nulles ( NULL ) :
    
    mysql> SELECT COUNT(DISTINCT resultat) FROM etudiant;
    
    Avec MySQL, vos pouvez connaître le nombre de combinaison d'expressions distinctes qui ne contiennent pas la valeur NULL en donnant une liste d'expressions. En ANSI SQL, vous devriez faire la concaténation de toutes les expressions de clause COUNT(DISTINCT ...) .
    AVG(expr)
    Retourne la valeur moyenne de la colonne expr :
    
    mysql> SELECT nom_etudiant, AVG(test_score)
        ->        FROM etudiant
        ->        GROUP BY nom_etudiant;
    MIN(expr)
    MAX(expr)
    Retourne le minimum ou le maximum de l'expression expr . MIN() et MAX() acceptent aussi les chaînes comme argument ; dans ce cas, elles retournent le minimum ou le maximum de la valeur de la chaîne. Comment MySQL utilise les index .
    
    mysql> SELECT nom_etudiant, MIN(test_score), MAX(test_score)
        ->        FROM etudiant
        ->        GROUP BY nom_etudiant;
    Dans MIN() , MAX() et les autres fonctions d'agrégat, MySQL compare les colonnes de type ENUM et SET par la valeur de leur chaîne au lieu de la position relative de la chaîne dans la liste. Cela sera rectifié.

    SUM(expr)
    Retourne la somme de l'expression expr . Notez que si aucune ligne n'est sélectionnée, la fonction retournera NULL !

    VARIANCE(expr)
    Retourne la variance standard de expr . C'est une extension à la norme ANSI SQL. (disponible à partir de la version 4.1).

    STD(expr)
    STDDEV(expr)
    Retourne la déviation standard de l'expression expr . C'est une extension à la norme ANSI SQL. La fonction STDDEV() est fournie pour assurer la compatiblité avec Oracle.

    BIT_OR(expr)
    Retourne le OR bit-à-bit de l'expression expr . Les calculs sont effectués avec une précision de 64 bits ( BIGINT ).

    BIT_AND(expr)
    Retourne le AND bit-à-bit de l'expression expr . Les calculs sont effectués avec une précisioon de 64 bits ( BIGINT ).
MySQL a étendu l'utilisation de la clause GROUP BY . Vous pouvez utiliser des noms de colonnes ou des expressions qui n'apparaissent pas dans la clause GROUP BY . Elles prennent alors n'importe quelle valeur possible dans ce groupe . Vous pouvez les utiliser pour améliorer les performances, en évitant de trier et regrouper des éléments non critiques. Par exemple, vous n'avez pas besoin de faire de groupement par client.nom dans la requête suivante :

mysql> SELECT order.custid,client.nom,MAX(payments)
    ->        FROM order,client
    ->        WHERE order.custid = client.custid
    ->        GROUP BY order.custid;
En ANSI SQL, vous devez ajouter client.nom à la clause GROUP BY . En MySQL, le nom est redondant si vous n'utilisez par le mode ANSI. N'utilisez surtout pas cette caractéristique si les colonnes que vous omettez n'ont pas de valeur unique au sein du groupe! Vous obtiendriez des résultas incohérents. Dans certains cas, vous pouvez utiliser MIN() et MAX() pour obtenir une valeur d'une colonne spécifique, même si elle n'est pas unique. La fonction suivante calcule la valeur de column dans la ligne contenant la plus petite valeur de la colonne sort :

SUBSTR(MIN(CONCAT(RPAD(sort,6,' '),column)),7)
La ligne contenant la plus grande valeur d'un certain champ par rapport à un groupe . Notez que si vous utilisez la version 3.22 de MySQL (ou plus récent), ou si vous essayez d'utiliser le mode ANSI SQL, vous ne pouvez pas utiliser d'expressions dans les clauses GROUP BY et ORDER BY . Vous pouvez contourner ces limitations en utilisant un alias d'expression :

mysql> SELECT id,FLOOR(value/100) AS val FROM nom_de_table
    ->        GROUP BY id,val ORDER BY val;
En MySQL version 3.23, vous pouvez faire :

mysql> SELECT id,FLOOR(value/100) FROM nom_de_table ORDER BY RAND();

<< Fonctions avec la clause GROUP BY >>
Autres fonctions Fonctions à utiliser dans les clauses SELECT et WHERE Référence du langage MySQL
Services webmasters
Les manuels
 
CoursPHP.com - Reproduction interdite -