SQL19 分组过滤练习题 (where 和having 的区别)

SQL19 分组过滤练习题
题意明确:

取出平均发贴数低于5的学校或平均回帖数小于20的学校
问题分解:

限定条件:平均发贴数低于5或平均回帖数小于20的学校,avg(question_cnt)<5 or avg(answer_cnt)<20

解题思想:
聚合函数结果作为筛选条件时,不能用where,而是用having语法,配合重命名也可;

要按学校输出:需要对每个学校统计其平均发贴数和平均回帖数,因此group by university 
 

为什么不能用where:
where的搜索条件是在执行语句进行分组之前应用,having的搜索条件是在分组条件后执行的

如果where和having一起用时,where会先执行,having后执行

答案:

select university ,
avg(question_cnt) avg_question_cnt,
avg(answer_cnt) avg_answer_cnt from user_profile 
group by university
having avg_question_cnt <5 
or  avg_answer_cnt<20 ;

猜你喜欢

转载自blog.csdn.net/weixin_45813351/article/details/121752104