group by 和count的联合使用问题
来源:互联网 发布:近期的网络大事件 编辑:程序博客网 时间:2024/05/19 19:34
今天写查询语句遇到一个问题,就是用group by进行分组以后,用count统计分组以后的个数,
开始写的语句大体是:
select count(m.fbrandid) from table as m group by m.fbrandid, month(fdate);
数据库中的数据为:
+----------+------------+-----------+------------------------+
| Fbrandid | Fdate | Ftotalnum | Fpersons |
+----------+------------+-----------+------------------------+
| 32 | 2008-11-01 | 10 | 8 |
| 32 | 2008-11-02 | 10 | 8 |
| 32 | 2008-11-03 | 10 | 8 |
| 32 | 2008-11-04 | 10 | 8 |
| 98 | 2008-11-01 | 10 | 8 |
| 98 | 2008-11-02 | 10 | 8 |
| 98 | 2008-11-03 | 10 | 8 |
| 98 | 2008-11-04 | 10 | 8 |
+----------+------------+-----------+----------------+
查出来的结果居然不是同样的一个值:
+------------+
| count(*) |
+-----------+
| 4 |
| 4 |
为何这里count(*)的结果是分组以后每组中的记录的条数,而不是分组的数目.
解决办法:
1 、将所有的数据查出来,在外面进行处理,这是非常不好的一种想法,请记住,我们用的是数据库,要更多的依赖数据库去解决问题,要有个信念:凡是在外面(程序)能解决的问题,用数据库都能解决!
2 、尝试引入子查询,如下:
select count(1) from (
-> select fbrandid, month(fdate) from table as m
-> where 1 = 1
-> group by m.fbrandid, month(fdate)
-> ) aa;
就是说对查询的结果再去统计,就是分组的数目了。
结论:
1、 并不是说group by和count()操作不能同时使用,只是说查出来的东西不一样,每个都有其应用的情况,如本例:最开始方法查出来的就是分组以后每个分组的记录条数,如果程序中要计算每个分组的记录条数,恰恰用这种方法。
2 、要更多靠数据库去解决问题。
3 、意识到子查询的威力,当你遇到解决不了的问题的时候,可以试试用子查询去解决。(实践证明的)
- group by 和count的联合使用问题
- group by 和count的联合使用问题
- group by 和count的联合使用问题
- group by 和count的联合使用问题
- sql语句中GROUP BY 和 HAVING的使用 count()
- sql语句中GROUP BY 和 HAVING的使用 count()
- sql语句中GROUP BY 和 HAVING的使用 count()
- sql语句中GROUP BY 和 HAVING的使用 count()
- sql语句中GROUP BY 和 HAVING的使用 count()
- 解决mysql group by和count同时使用的bug
- sql语句中GROUP BY 和 HAVING的使用 count()
- sql语句中having count 和group by的使用
- sql语句中GROUP BY 和 HAVING的使用 count()
- sql语句中GROUP BY 和 HAVING的使用 count()
- group by 和count
- GROUP BY 和 ORDER BY 子句联合使用组合查询
- 使用Thinkphp解决group和count一起使用的问题
- where group by联合使用
- 九度OJ 1207 质因数的个数
- SQL 脚本中的全角逗号引起【ORA-01756: 引号内的字符串没有正确结束】
- 黑马程序员----网络编程(1)
- 性能测试常见问题解决思路
- 让cpu占用率曲线听你指挥
- group by 和count的联合使用问题
- 性能计数器说明 %disk time超过100% ?
- poj2689素数问题
- 谷歌、微软争相布局 科技巨头抢滩物联网
- 大数据库技术在與情分析领域的应用
- 为何%Processor Time (Process _Total)值能超出100%?
- JAVA设计模式 值得认真看看的系列文章
- GPS定位
- protocol buffer 实现高性能通讯