聚合函数中去除值为null的方法
ifnull(字段名,0),这个表示如果字段名是null的话,就用0代替。
常常搭配聚合函数中求平均值,求数量去使用。
例子:求student中学生的平均成绩:
select avg(ifnull(degree,0)) from student
分组查询
分组其实就是分类。根据需求,按分组的形式去返回不同的数据。
分组查询常常是和聚合函数一起使用的。
语法:
select 分类字段,聚合函数(字段名) from tablename group by 分类字段 [having 子句]
注意:
分类字段和group的分类字段是一致的
代码示例:查询学生表student中男女生的数量。
分析:男女生,就是分组,数量,就是count聚合函数。
select sex,count(*) from student group by sex;
having子句的用法
having子句的作用,是对分组之后的数据进行筛选。
having中的表达式,字段要在分组的数据里面选择。
例子:选择平均分及格的记录
select stuNo avg(degree) from student group by stuNo having avg(degree)>=60
having 和where的区别
1 作用对象不一样:having是作用于分组之后的数据,where 是分组之前的数据
2 语法位置不一样,having只能放在group by后面,where 只能放在group by前面