select 班号,avg(身高) as 女生平均身高
from 学生表
where 性别='女'
group by 班号
select 班号,avg(身高) as 女生平均身高
from 学生表
group by 班号,性别
having 性别='女'
select 班号,avg(身高) as 女生平均身高
from 学生表
where 性别='女'
group by 班号
select 班号,avg(身高) as 女生平均身高
from 学生表
group by 班号,性别
having 性别='女'
1.你第一段sql,以班号分组,筛选性别为女,得到结果为各班级的女生平均身高;
2.你第二段sql,以班号、性别分组,having筛选性别为女,目的也为查询各班的女生平均身高;
3.执行结果上,第二段sql执行不了,原因是你group by 后的字段在select后没有写,如果select 班号,性别, avg (身高)是可以执行的;
4.解析: where和having都是筛选条件,where是对from后的表进行条件筛选,having是对group by之后的数据集进行筛选。两者都是筛选条件,结果可以雷同,但是意义不同,而且可用where就先用where,再用haivng。题主对于sql执行先后顺序可以再去看看。希望对你有所帮助。