来自上一个博客《mysql简单查询》:http://blog.csdn.net/zui Wuyuan/article/details/39349611的文章实例数据表
一、聚合函数
也称为集合函数、结合函数
求出所有数据数
计数不计数空值,计数为记录数selectcount(comm ) FROM emp; #查询emp表comm的总数
选择计数(* ) FROM emp; #查询emp表中的行记录总数
选择计数(distinct deptno ) FROM emp; #查询不重复的深度记录总数
求平均值,忽略null值
选择avg (sal ) FROM emp;
选择avg (comm ) FROM emp; # 2200/4=550
求和
selectsum(sal ) FROM emp;
求出最大值
选择最大(sal ) FROM emp;
#求出最小值
选择最小(sal ) FROM emp;
二.分组
Group by词法的真正作用是与各种聚合函数配合使用,用于对来自查询的数据进行分组
分组是指将该列具有相同值的多个记录视为一组记录,最后只输出一个记录
分组函数忽略空值
结果集隐式按升序排序。 order by词法/**
GROUP BY可以根据你的分组条件对数据进行分组,然后进行统计
其实,我们将部门分组,统计分组后的聚合值(平均、最大、最小等)
*/
查询每个部门的平均工资
选择深度,AVG(sal ) FROM emp GROUP BY deptno;
#查询每个部门的员工人数
选择深度,count(* ) FROM emp GROUP BY deptno;
咨询各部门的总体工资情况
如果select语句中的列不使用组函数,则必须显示在group by词法中
出现在group by词法中的列不一定出现在select语句中
选择深度、AVG(sal )、max (sal )、min (sal )、sum (sal )、COUNT(1)1) ) )。
来自Emp
组依据深度;
#每个部门每个职位的平均工资
选择深度,作业,AVG(sal ) FROM emp GROUP BY deptno,作业;
三.限定组的结果
HAVING词法用于有条件地筛选分组的结果
查询部门平均工资超过2000的;
#分组后附加条件:使用having
# where和having都用于条件限定,但having只能在group by之后使用
选择深度、AVG(sal )、max (sal )、min (sal )、sum (sal )、COUNT(1)1) ) )。
来自Emp
#whereavg(sal ) 2000; 此语句报告错误,因为where词法不允许使用分组函数
组按深度
哈维宁视听(sal ) 2000;
where和having的区别:
where在分组之前进行条件过滤
having词法分组后进行条件过滤
where词法不能使用聚合函数
having词法可以使用局、函数和一般的过滤条件
四)限定查询结果
可以在select语句末尾使用limit来限制查询结果返回的起始记录和总数
select.limit offset_start,row_count;
offset_start:首先返回记录行的偏移,默认值为0
row_count :要返回记录行的最大数量SELECT * FROM emp LIMIT 5; 搜索前五条记录
select * from EMP limit 5,10; 从第#6行开始,记录行6-15 (因为默认值为0,所以这里的5只是第6行的记录) ) ) ) ) ) ) ) ) ) ) ) ) )。