SQL语句中对group by子句分组聚合后的结果,如果还需要进一步筛选,可以使用having子句来指定筛选条件。
having子句通常是配合group by子句一起使用,其功能和where 子句非常相似,都是对数据进行过滤,having 子句支持 where 子句中所有的操作符和语法。但区别在于where子句是针对数据表进行筛选的,在对查询结果进行分组前,就将不符合where查询条件的记录去掉,故其查询条件中不能包含聚合函数。而having子句则是对分组聚合后的结果进行过滤,故having子句中的筛选字段必须是可以出现在分组结果中的字段,且其筛选条件中经常包含聚合函数。
语法格式:
select <字段名列表> from <表名> [where <查询条件>] group by <分组字段列表> having <筛选条件>;
示例:
select s_id,avg(score)
from sc
group by s_id
having avg(score)>=80;