看这样一张表:

是北京、上海、重庆三天的pm2.5的数值,现在想要求这三天日均pm2.5>200的城市,使用sql子查询的话,语句如下:
select *
from (select location, round(avg(pm2_5), 0) ave_pm2_5
from test_having_pm25
group by location)
where ave_pm2_5 > 200
结果如下:
![]()
这样操作需要使用嵌套查询,比较麻烦。原因就是where关键字和聚合函数不能同时使用,为了解决这一麻烦,可以使用having子句。上述需求的having语句如下:
select location, round(avg(pm2_5), 0) ave_pm2_5
from test_having_pm25
group by location
having round(avg(pm2_5), 0) > 200
查询结果一样:
![]()
总结
having子句可用于聚合之后的条件查询,减少sql语句的嵌套层数。
本文通过一个关于北京、上海、重庆三城市PM2.5数值的案例,讲解了如何使用SQL的Having子句进行聚合后的条件筛选,对比了使用Where和Having的不同,突出了Having在减少SQL语句复杂度上的优势。
1704

被折叠的 条评论
为什么被折叠?



