在两个字段上使用group by并在SQL中计数

Mar*_*arc 73 mysql sql

我的mysql数据库中有一个表,它有两列:group和subgroup.见下文.

 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
Run Code Online (Sandbox Code Playgroud)

我正在尝试获取每个唯一的一对组/子组的记录数.

这就是我的期望:

group, subGroup, count
grp-A, sub-A, 2
grp-A, sub-B, 1
grp-B, sub-A, 1
grp-B, sub-B, 2
Run Code Online (Sandbox Code Playgroud)

在阅读了一些帖子之后,我尝试了使用group by,count()的几个sql查询,但是我无法获得预期的结果.我怎样才能解决这个问题?

Cor*_*bin 123

我想你正在寻找: SELECT a, b, COUNT(a) FROM tbl GROUP BY a, b

  • `a和b`看起来像是MySQL的一个声明(实际上不确定它是否会出现语法错误,或者它是否会在0或1返回时分组 - 我会假设语法错误,特别是对于varchar字段).要对多个列进行分组,只需使用逗号即可. (3认同)
  • 我想要每个组的 sugroups 数,所以这是查询 SELECT a, b, COUNT(distinct b) FROM tbl GROUP BY a (3认同)

小智 7

您必须对列,组和子组进行分组,然后使用聚合函数COUNT().

SELECT
  group, subgroup, COUNT(*)
FROM
  groups
GROUP BY
  group, subgroup
Run Code Online (Sandbox Code Playgroud)


use*_*214 6

SELECT group,subGroup,COUNT(*) FROM tablename GROUP BY group,subgroup
Run Code Online (Sandbox Code Playgroud)