首先创建个表说明问题
复制代码 代码如下:
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)的情况。即使是这样使用,可能其初衷也是想统计行数。只是不知道!这样所造成的细微差异而错误使用了"列名"的形式。
相关推荐:
php后台程序与Javascript的两种交互方式
mysql正则表达式 LIKE 通配符
Ajax 核心框架函数及例子
JavaScript 定义function的三种方式小结
Oracle 创建监控账户 提高工作效率
判断时间的正则表达式
Python+Django在windows下的开发环境配置图解
php header 详细使用说明与使用心得第1/2页
jquery 选择器部分整理
服务器有效设置防止web入侵图文方法
支持IE,Firefox的javascript 日历控件
国外开发者谈为何放弃PHP而改用Python
jsp 自定义标签实例
JavaScript 接收键盘指令示例
写出更好的JavaScript之undefined篇(上)
SQLServe 重复行删除方法
COM域名热度不减 聚集域名投资无限商机
jquery 可排列的表实现代码
KB967723造成MySQL频繁无法连接
ExtJS 配置和表格控件使用第1/2页
学习ExtJS Column布局
Asp.net中使用Sqlite数据库的方法
Javascript实现的CSS代码高亮显示
文字在网页上下浮动 学习可以不建议用
extjs DataReader、JsonReader、XmlReader的构造方法
Linux下Squid配置详解 Squid代理服务器配置第1/3页
判断一个表的数据不在另一个表中最优秀方法
jquery (show,fadeOut,Animate)简单效果
JavaScript 炫彩的文字
javascript(jquery)利用函数修改全局变量的代码
javascript 面向对象,实现namespace,class,继承,重载
颈椎残废记 站长兄弟请注意保护好自己的身体
mysql sql语句总结
javascript 打印内容方法小结
JavaScript中的JSON 中文版翻译
php 向访客和爬虫显示不同的内容
VBS 批量读取文件夹内所有的文本到Excel的脚本
JavaScript 利用StringBuffer类提升+=拼接字符串效率
drop,truncate与delete的区别
Oracle 子程序参数模式,IN,OUT,NOCOPY
Mootools 1.2教程 输入过滤第二部分(字符串)
php面向对象全攻略 (十二) 抽象方法和抽象类
写出更好的JavaScript程序之undefined篇(中)
union组合结果集时的order问题
Tab页界面,用jQuery及Ajax技术实现
MSSQL 数据库同步教程
提高网站性能之 如何对待JavaScript
中文域名备受关注 互联网40年最大变革
ORACLE实例的后台进程
apache启动报错:the requested operation has failed解决办法