题解 | #分组过滤练习题#
分组过滤练习题
https://www.nowcoder.com/practice/ddbcedcd9600403296038ee44a172f2d
现在运营想要对每个学校不同性别的用户活跃情况和发帖数量进行分析,请分别计算出每个学校每种性别的用户数、30天内平均活跃天数和平均发帖数量。
取字段,学校,发帖,回帖
语句顺序:select···from···where···group by···having···order by···limit···(#顺序不能颠倒,否则执行错误)
执行顺序:先找到表,对学校进行分组,进行平均发帖和回帖进行过滤,在查询字段平均发帖低于5的学校或回帖小于20的学校。
#思考:这里为啥不能用where过滤,用having过滤,因为where后面不能跟分组函数,分组函数:count、sum、avg、max、min
#为啥select后面可以写分组函数,其实这里已经分组完成了,所以执行语句不会出现错误。
select university, round(avg(active_days_within_30),3) as avg_question_cnt round(avg(answer_cnt),3) as avg_answer_cnt from user_profile group by university having avg(avg_question_cnt) < 5 avg(avg_answer_cnt) < 20;
