介绍Mysql中的count()与sum()区别

CREATE TABLE `result` (
`name` varchar(20) default NULL,
`subject` varchar(20) default NULL,
`score` tinyint(4) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 insert into result values
('张三','数学',90),
('张三','语文',50),
('张三','地理',40),
('李四','语文',55),
('李四','政治',45),
('王五','政治',30),
('赵六','语文',100),
('赵六','数学',99),
('赵六','品德',98); 要求:查询出2门及2门以上不及格者的平均成绩。
经常会用两种查询语句有两种: select name,sum(score < 60) ,avg(score) from result group by name having sum(score<60) >=2; select name ,count((score<60)!=0) as a,avg(score) from result group by name having a >=2; 两种查询的结果肯定是不一样的,肯定是第一种正确的,原因是为什么,这时你就要想了,count()函数的意义和sum函数的意义
count()函数里面的参数是列名的的时候,那么会计算有值项的次数。
Sum()函数里面的参数是列名的时候,是计算列名的值的相加,而不是有值项的总数。
对count()行数还要注意:它会计算总行数。不管你是否有值都会列入计算范围。另外一点:mysqlisam引擎很容易获得总行数的统计。查询速度变得更快
归纳:实际编程中统计总行数是经常用到的。此时使用count(*)多处可见。我很少看到有人使用列名作为参数:count(a)的情况。即使是这样使用,可能其初衷也是想统计行数。只是不知道!这样所造成的细微差异而错误使用了"列名"的形式。

最新文章

  1. C#中的Excel操作【1】——设置Excel单元格的内容,打开Excel文件的一种方式
  2. uva 10340 All in All
  3. python 在 for i in range() 块中改变 i 的值的效果
  4. mysql之 mysql 5.6不停机主从搭建(一主一从基于GTID复制)
  5. 《javascript 高级程序设计》笔记
  6. 浪潮之巅——IT产业的三大定律
  7. bugku web 矛盾
  8. Spring出现事务代理的原因
  9. Lesnoe Ozero 2016. BSUIR Open 2016 Finals
  10. MongoDB 菜鸟入门“秘籍”
  11. LeetCode算法题-Add Strings(Java实现)
  12. 20172328《程序设计与数据结构》实验四 Android程序设计报告
  13. .Net可扩展的单据编号生成器-SNF.CodeRule--SNF快速开发平台3.2
  14. Unable to open debugger port (127.0.0.1:63777): java.net.BindException &quot;Address
  15. http_build_query
  16. jdk1.8 HashMap源码讲解
  17. 等待事件对应的p1,p2,p3含义
  18. Android程序员学WEB前端(4)-HTML(4)-注册页面-Sublime
  19. Thunder团队第三周 - Scrum会议4
  20. java集合之深入分析ArrayList

热门文章

  1. [swustoj 764] 校门外的树 Plus Plus
  2. Linux 的档案权限与目录配置
  3. Bootstrap中的less基础
  4. [摘]selenium-ide编辑命令
  5. 正则表达式(来源http://deerchao.net/tutorials/regex/regex.htm)
  6. curl post请求
  7. 关于 Unity UI 中 GraphicRaycaster.Raycast 数量巨大的问题
  8. Clean Code &ndash; Chapter 6 Objects and Data Structures
  9. CodeForces 362B Petya and Staircases
  10. ARM Linux字符设备驱动程序