在两个字段上使用分组依据并在SQL中计数


83

我的mysql数据库中有一个表,该表有两列:组和子组。见下文。

 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

我正在尝试获取每个唯一的夫妇组/子组的记录数。

这是我期望的:

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

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


1
我想要另一种情况,每个组的sugroup数,所以这是查询SELECT a,b,COUNT(distinct b)from tbl GROUP BY a
幸运的

Answers:


139

我认为您正在寻找: SELECT a, b, COUNT(a) FROM tbl GROUP BY a, b


1
你好科宾布。非常感谢你。这是工作。我按照您的建议做了,但受a,b的影响。再次感谢
Marc

3
a and b看起来像对MySQL的声明(实际上不确定是语法错误还是返回0或1分组-我会假设语法错误,尤其是对于varchar字段)。要对多个列进行分组,只需使用逗号即可。
科宾

1
非常感谢!!..我的问题是我无法表达我的问题,并花了很多时间在谷歌上搜索,最终找到了一个简单的点解决方案。
faheem farhan

除了计数,我还需要整个记录的详细信息。例如,grpA有2个子组:subA和subB,因此我需要检索每个子组的整个记录​​。谁能帮帮我吗。@Corbin
管理员7798年

2
我想要每个组的sugroup计数,所以这是查询SELECT a,b,COUNT(distinct b)from tbl GROUP BY a
luky

8
SELECT group,subGroup,COUNT(*) FROM tablename GROUP BY group,subgroup

除了计数,我还需要整个记录的详细信息。例如,grpA有2个子组:subA和subB,因此我需要检索每个子组的整个记录​​。谁能帮帮我吗。@ user1127214
管理员7798年

7

您必须将列,组和子组都分组,然后使用聚合函数COUNT()

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

1
对我来说似乎是拼写错误!= groupName
csharpwinphonexaml

除了计数,我还需要整个记录的详细信息。例如,grpA有2个子组:subA和subB,因此我需要检索每个子组的整个记录​​。谁能帮帮我吗。@farzane
管理员7798年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.