Page 35 - DCG - SQL - 2025
P. 35

FICHE 14 - Regrouper et filtrer des groupes :



                                       GROUP BY et HAVING





           Le concept
        La clause GROUP BY permet de regrouper les lignes d'une table selon un ou plusieurs champs et de calculer des
        agrégats (somme, moyenne, nombre...) pour chaque groupe.

        La clause HAVING permet de filtrer les groupes après regroupement (comme WHERE mais sur les groupes).
          Tout champ présent dans le SELECT (hors fonctions d’agrégation) doit impérativement apparaître dans le


        GROUP BY.




          ️ La syntaxe
                       SELECT champ_groupe, fonction_agregat(champ)

                       FROM nom_table
                       GROUP BY champ_groupe
               Tous les champs qui sont dans le Select (excepté les agrégats), doivent être dans le Group By

               Filtrer les groupes :
                       SELECT champ_groupe, fonction_agregat(champ)
                       FROM nom_table
                       GROUP BY champ_groupe
                       HAVING fonction_agregat(champ) condition




           Exemple expliqué

        Table LIGNE_COMMANDE :
               NoCommande            RefProd       Quantité
               C01                   P1                    3
               C01                   P2                    5
               C02                   P1                    1
               C03                   P3                    8
               C03                   P2                    2


        Objectif : connaître la quantité totale commandée par produit.
               SELECT RefProd, SUM(Quantité)
               FROM LIGNE_COMMANDE
               GROUP BY RefProd

                                                             30
   30   31   32   33   34   35   36   37   38   39   40