web-dev-qa-db-fra.com

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 couples 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 articles, j’ai essayé plusieurs requêtes SQL en utilisant group by, count (), mais je n’arrivais pas à obtenir le résultat attendu. Comment puis-je réparer cela?

72
Marc

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

121
Corbin

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

SELECT
  group, subgroup, COUNT(*)
FROM
  groups
GROUP BY
  group, subgroup
7
farzane
SELECT group,subGroup,COUNT(*) FROM tablename GROUP BY group,subgroup
6
user1127214

je voulais un autre cas, nombre de sous-groupes pour chaque groupe, donc c'est la requête SELECT a, b, COUNT (distinct b) FROM tbl GROUP BY a

0
luky