2012-04-30 71 views
60

我在我的mysql数据库中有一个表,它有两列:组和子组。见下文。在两个字段上使用group by和在SQL中计数

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 

读一些职位,我试了几个SQL查询中使用GROUP BY,计数()之后,但我不设法得到预期的结果。我怎样才能解决这个问题?

回答

107

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

+1

Hello Corbinb。非常感谢你。这是工作。我做了你的建议,但是由a组成,但我被a和b分组。再次感谢 – Marc

+3

'a和b'看起来像是对MySQL的一个声明(实际上并不确定它是否会出现语法错误,或者它是否会在0或1的返回上分组 - 我会假设一个语法错误,特别是对于varchar字段) 。要将多个列分组,您只需使用逗号。 – Corbin

+1

非常感谢! ..与我的问题是我无法说出我的问题,并花了很多时间Google搜索最终落地在这里一个简单的点解决方案。 –

6
SELECT group,subGroup,COUNT(*) FROM tablename GROUP BY group,subgroup 
+0

而不是计数我需要整个记录的细节。例如,grpA有2个子组:subA和subB,所以我需要检索每个子组的整个记录​​。谁能帮帮我吗。迟了@ user1127214 –

5

必须组两列,组和子组,然后使用聚合函数COUNT()

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

,但这个答案真的救了我! –

+1

似乎给我一个错别字组= = groupName – csharpwinphonexaml

+0

而不是计数我需要整个记录的详细信息。例如,grpA有2个子组:subA和subB,所以我需要检索每个子组的整个记录​​。谁能帮帮我吗。 @farzane –