分组查询
1、分组查询语法
select 字段列表 from 表名 [where 分组前条件限定] group by 分组字段名 [having 分组后条件过滤];
注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
where和having区别:
-
执行时机不一样:where是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤
-
可判断条件的不一样:where不能对聚合函数进行判断,having可以
执行顺序:where>聚合函数>having
1、查询男同学和女同学各自的数学平均分
select sex,avg(math) from stu group by sex;
2、查询男同学和女同学各自的数学平均分,以及各自人数
select sex,avg(math),count(*) from stu group by sex;
3、查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70的不参与分组(分组之前就不参与)
select sex,avg(math),count(*) from stu where math>70 group by sex;
4、查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2
select sex,avg(math),count(*) from stu where math>70 group by sex having count(星号)>2;