Maison > Article > base de données > regroupement de données mysql : créer des groupes
regroupement de données MySQL
Les fonctions d'agrégation SQL peuvent être utilisées pour résumer les données. Cela nous permet de compter les lignes, de calculer des sommes et des moyennes et d'obtenir des valeurs maximales et minimales sans récupérer toutes les données.
Tous les calculs jusqu'à présent ont été effectués sur toutes les données du tableau ou sur des données correspondant à une clause Where spécifique. Pour rappel, l'exemple suivant renvoie le nombre de produits fournis par le fournisseur 1003 :
Entrée :
select count(*) as mun_prods from products where vend_id = 1003;
Sortie :
Mais que faire si vous souhaitez restituer le nombre de produits proposés par chaque fournisseur ? Ou que se passe-t-il si nous renvoyons des produits fournis par des fournisseurs qui ne fournissent qu'un seul produit, ou si nous renvoyons des fournisseurs qui fournissent plus de 10 produits ?
C'est le moment pour les groupes de montrer leurs compétences. Le regroupement permet de diviser les données en plusieurs groupes logiques afin que des calculs agrégés puissent être effectués sur chaque groupe.
mysql crée un groupe
Le groupe est établi dans la clause group by de l'instruction select. La meilleure façon de comprendre le regroupement est de regarder l'exemple suivant :
Entrée :
select vend_id,count(*) as num_prods from products group by vend_id;
Sortie :
Analyse : ci-dessus L'instruction select spécifie deux colonnes, vend_id contient l'ID du fournisseur du produit et num_prods est un champ calculé (créé avec la fonction count(*)). Regrouper par clause de connaissance MySQL trie et regroupe les données par vend_id. Cela entraîne le calcul de num_prods une fois pour chaque vend_id au lieu de la table entière. Comme vous pouvez le voir sur le résultat, le fournisseur 1001 a 3 produits, le fournisseur 1002 a 2 produits, le fournisseur 1003 a 7 produits et le fournisseur 1005 a 2 produits.
Étant donné que group by est utilisé, il n'est pas nécessaire de spécifier chaque groupe à calculer et à valoriser. Le système le fera automatiquement. La clause group by invite MySQL à regrouper les données, puis à agréger chaque groupe au lieu de l'ensemble des résultats.
Avant d'utiliser la clause group by, vous devez connaître quelques règles importantes :
1 La clause group by peut contenir n'importe quel nombre de colonnes. Cela permet l'imbrication de groupes, offrant un contrôle plus granulaire sur le regroupement des données.
2. Si les groupes sont imbriqués dans la clause group by, les données seront résumées sur le dernier groupe spécifié. En d'autres termes, lors de la création d'un groupe, toutes les colonnes spécifiées sont calculées ensemble (les données ne peuvent donc pas être récupérées à partir de colonnes individuelles).
3. Chaque colonne répertoriée dans la clause group by doit être une colonne de recherche ou une expression valide (mais pas une fonction d'agrégation). Si vous utilisez une expression dans select, vous devez spécifier la même expression dans la clause group by. Les pseudonymes ne peuvent pas être utilisés.
4. À l'exception des instructions de calcul agrégé, chaque colonne de l'instruction select doit être donnée dans la clause group by.
5. S'il y a une valeur NULL dans la colonne de regroupement, NULL sera renvoyé sous forme de regroupement. S'il y a plusieurs lignes de valeurs NULL dans une colonne, elles seront regroupées.
6. La clause group by doit apparaître après la clause Where et avant la clause order by.
[Recommandations associées]
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!