题解 | SQL 入门 19 #分组过滤练习题#

分组过滤练习题

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

知识

使用HAVING

HAVING子句用于对分组后的结果再进行过滤,
它的功能有点像WHERE子句,但它用于组而不是单个记录。
在HAVING子句中可以使用统计函数,但在WHERE子句中则不能。
HAVING通常与GROUP BY子句一起使用。

例36.查询学生表中人数大于等于3的班号和人数。

SELECT 班号, COUNT(*) 人数
FROM 学生表
GROUP BY 班号
HAVING COUNT(*) >= 3

例37.查询平均成绩大于等于80的学生的学号、选课门数和平均成绩。

SELECT 学号, COUNT(*) 选课门数,
AVG(成绩) 平均成绩 FROM 成绩表
GROUP BY 学号
HAVING AVG(成绩) >= 80

题解

题目:现在运营想查看每个学校用户的平均发贴和回帖情况,寻找低活跃度学校进行重点运营,请取出平均发贴数低于5的学校或平均回帖数小于20的学校。

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

示例:user_profile

根据示例,你的查询应返回以下结果:

【题解】SQL 入门 文章被收录于专栏

SQL 入门 题解

全部评论
大佬请问这个sql的执行顺序怎么理解? SELECT avg(列) as new_name 不是最后执行的吗,为什么在where中可以直接使用在select中聚合并重命名的变量,比如这个new_name?
点赞 回复 分享
发布于 2022-04-24 12:24
group by 开始使用select中的别名,执行顺序在此之后的语句都可以使用
点赞 回复 分享
发布于 2022-08-22 01:12 广东

相关推荐

美团 后端开发 总包n(15%是股票)
点赞 评论 收藏
分享
死在JAVA的王小美:哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈,我也是,让我免了一轮,但是硬气拒绝了
点赞 评论 收藏
分享
评论
57
15
分享
牛客网
牛客企业服务