题解 | 分组过滤练习题

分组过滤练习题

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

SELECT 
    university,
    AVG(question_cnt) AS avg_question_cnt,
    AVG(answer_cnt)	AS avg_answer_cnt
FROM user_profile
GROUP BY university 
//SELECT 子句中包含了非聚合列 university,使用 GROUP BY 子句进行分组。在标准 SQL中,如果 SELECT 列表中既有聚合函数(如 AVG)又有普通列,那么该普通列必须出现在 GROUP BY 子句中,否则数据库无法确定要为哪一组university 返回结果。此外,HAVING 通常与 GROUP BY 配合使用,用于过滤分组后的结果;如果没有 GROUP BY,HAVING 会作用于整个表作为一个分组,但依然无法解决非聚合列的问题。
HAVING avg_question_cnt < 5 OR avg_answer_cnt < 20;
//如果聚合函数(select里用了函数),并且这个函数结果要在后续的筛选中用到,则要用having筛选,而不是where

全部评论

相关推荐

程序员小屁:帮你了查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务