96 votes

Utiliser group by sur deux champs et compter en SQL

J'ai une table dans ma base de données mysql qui a deux colonnes : groupe et sous-groupe. Voir ci-dessous.

 group, subGroup
 grp-A, sub-A
 grp-A, sub-A
 grp-A, sub-B      
 grp-B, sub-A
 grp-B, sub-B
 grp-B, sub-B

J'essaie d'obtenir le nombre d'enregistrements pour chaque groupe/sous-groupe de couple unique.

C'est ce que j'attends :

group, subGroup, count
grp-A, sub-A, 2
grp-A, sub-B, 1
grp-B, sub-A, 1
grp-B, sub-B, 2

Après avoir lu quelques posts, j'ai essayé plusieurs requêtes sql en utilisant group by, count(), mais je ne parviens pas à obtenir le résultat attendu. Comment puis-je résoudre ce problème ?

153voto

Corbin Points 17420

Je pense que vous cherchez : SELECT a, b, COUNT(a) FROM tbl GROUP BY a, b

9voto

user1127214 Points 431
SELECT group,subGroup,COUNT(*) FROM tablename GROUP BY group,subgroup

7voto

farzane Points 11

Vous devez regrouper les deux colonnes, regrouper et sous-grouper, puis utiliser la fonction d'agrégation COUNT() .

SELECT
  group, subgroup, COUNT(*)
FROM
  groups
GROUP BY
  group, subgroup

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X