题解 | #分组过滤练习题#

分组过滤练习题

https://www.nowcoder.com/practice/ddbcedcd9600403296038ee44a172f2d

在MySQL中使用WHERE子句来筛选聚合函数结果是不被支持的,这是SQL语法的限制。这是因为WHERE子句在执行查询时会在分组之前进行过滤,而聚合函数是在分组之后计算的。

如果使用WHERE子句来筛选聚合函数结果,MySQL无法确定在分组之前如何计算avg_question_cnt和avg_answer_cnt。因此,会报出SQL异常。

解决这个问题的方法是使用HAVING子句,它是在分组之后对聚合函数结果进行过滤的。这样,聚合函数可以先计算,然后再进行筛选操作。

所以,正确的查询语句应该是:

SELECT university, AVG(question_cnt) AS avg_question_cnt, AVG(answer_cnt) AS avg_answer_cnt 
FROM user_profile 
GROUP BY university 
HAVING avg_question_cnt < 5 OR avg_answer_cnt < 20;

这样就可以正确地根据聚合函数的结果进行筛选了。

全部评论

相关推荐

03-07 13:32
门头沟学院 C++
未来可欺a:读研吧,这简历只适合学历高的,本科大概率只能干开发,你这个简历开发不匹配,算法和深度学习的话学历又不够
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务