Problème :
Vous souhaitez regrouper vos données en deux colonnes afin de pouvoir comptabiliser certaines statistiques.
Exemple :
Dans la order table, vous avez les colonnes order_date , product_id , customer_id , et number . Vous souhaitez compter le nombre de produits achetés par chaque client chaque jour.
La order le tableau ressemble à ceci :
| order_date | product_id | id_client | numéro |
|---|---|---|---|
| 2020-11-25 | 7 | 1 | 1 |
| 2020-11-25 | 12 | 1 | 3 |
| 2020-11-26 | 53 | 1 | 2 |
| 2020-11-26 | 1 | 2 | 4 |
| 2020-11-26 | 3 | 2 | 1 |
| 2020-11-26 | 16 | 2 | 7 |
| 2020-11-26 | 3 | 3 | 2 |
| 2020-11-27 | 6 | 3 | 1 |
Solution :
SELECT order_date, customer_id, SUM(number) AS products_number FROM order
Le résultat est :
| order_date | id_client | products_number |
|---|---|---|
| 2020-11-26 | 3 | 2 |
| 2020-11-27 | 3 | 1 |
| 2020-11-26 | 2 | 12 |
| 2020-11-25 | 1 | 4 |
| 2020-11-26 | 1 | 2 |
Discussion :
Pour grouper par deux colonnes, utilisez simplement GROUP BY avec deux colonnes. Les noms de colonne doivent être listés après le GROUP BY mot clé et séparés par une virgule. Des groupes seront créés en fonction des valeurs des deux colonnes ; pour chaque paire de valeurs, un groupe distinct est créé (par exemple, ('2020-11-25', 1) ). Regardez le tableau ci-dessous, où chaque groupe est présenté dans une couleur différente :
| order_date | id_client | product_id | numéro |
|---|---|---|---|
| 2020-11-25 | 1 | 7 | 1 |
| 2020-11-25 | 1 | 12 | 3 |
| 2020-11-26 | 1 | 53 | 2 |
| 2020-11-26 | 2 | 1 | 4 |
| 2020-11-26 | 2 | 3 | 1 |
| 2020-11-26 | 2 | 16 | 7 |
| 2020-11-26 | 3 | 3 | 2 |
| 2020-11-27 | 3 | 6 | 1 |
Si une ou les deux colonnes ont NULL valeurs, ces valeurs sont traitées comme un groupe séparé (par exemple, ('2020-11-26', NULL) , (NULL, 5) ou (NULL, NULL) ).
Par contre, s'il y a des NULLs dans une colonne sur laquelle on applique une fonction d'agrégation, le NULL les valeurs sont simplement omises. (Dans cet exemple, la fonction d'agrégation est SUM() et la colonne est number ). Si nous avions les valeurs numériques 2 , 1 , et NULL pour l'un des groupes, le SUM(number) serait égal à 3 (2 et 1 sont additionnés, et NULL est omis.)
De même, vous pouvez grouper par n'importe quel nombre de colonnes - écrivez simplement les noms de colonne dans le GROUP BY clause et séparez-les par des virgules.