当前位置: 代码迷 >> Oracle管理 >> count聚合函数求教解决方法
  详细解决方案

count聚合函数求教解决方法

热度:100   发布时间:2016-04-24 04:18:50.0
count聚合函数求教
sql如下:
select a.no1,b.no2 ,count(a.no1) from  a, b
where a.cnid=b.cnid and a.no1='1997330783000028198'
group by a.no1,b.no2
查询结果是:
1997330783000028198     aa   1
1997330783000028198     bb   1
1997330783000028198     cc    1
1997330783000028198     dd   1

谁能告诉我,为什么count(a.no1)的结果是1,而不是4呢?
count不是统计所有的么?

我菜鸟,求指点。
------解决方案--------------------
因为你加了分组函数group by a.no1,b.no2,所以count就根据每组(a.no1,b.no2的组合)数据统计,正好每组中对应记录只有一条所以就是上面的结果了
------解决方案--------------------
group by a.no1,b.no2是按两个条件分组的,如果只是按照a.no1,就是4
------解决方案--------------------
简单的说吧,如果表的数据是这样
1997330783000028198     aa   1
 1997330783000028198     bb   1
 1997330783000028198     cc    1
 1997330783000028198     dd   1
1997330783000028198     aa   1
 1997330783000028198     bb   1
 1997330783000028198     cc    1
 1997330783000028198     dd   1
那么你的语句应该统计的结果是
1997330783000028198     aa   2
 1997330783000028198     bb   2
 1997330783000028198     cc    2
 1997330783000028198     dd   2
也就是分组统计,group by 后面的字段是一个完整的组合
  相关解决方案