题解 | SQL 入门 20 #分组排序练习题#

分组排序练习题

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

知识

WHERE, GROUP BY, HAVING

当查询语句的目标列中包含聚合函数时,若没有分组子句,则目标列中只能写聚合函数,而不能再写其他列名。若包含分组子句,则在查询的目标列中除了可以写聚合函数外,只能写分组依据列。
WHERE子句用来筛选FROM子句中指定的数据源所产生的行数据。
GROUP BY子句用来对经WHERE子句筛选后的结果数据进行分组。
HAVING子句用来对分组后的结果数据再进行筛选。
对于可以在分组操作之前应用的搜索条件,在WHERE子句中指定它们更有效,这样可以减少参与分组的数据行。
应当在HAVING子句中指定的搜索条件应该是那些必须在执行分组操作之后应用的搜索条件。
建议将所有行搜索条件放在WHERE子句中而不是HAVING子句中

例38.查询计算机系和信息管理系的学生人数:

SELECT Sdept, COUNT(*) FROM Student
GROUP BY Sdept
HAVING Sdept in ( '计算机系', '信息管理系’)

或:

SELECT Sdept, COUNT (*) 
FROM Student
WHERE Sdept in ( '计算机系', '信息管理系')
GROUP BY Sdept

第二种写法比第一种写法效率要高,因为参与分组的数据会比较少。

题解

题目:现在运营想要查看不同大学的用户平均发帖情况,并期望结果按照平均发帖情况进行升序排列,请你取出相应数据。

SELECT university,AVG(question_cnt)avg_quesition_cnt
FROM user_profile
GROUP BY university
ORDER BY avg_quesition_cnt ASC

示例:user_profile

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

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

SQL 入门 题解

全部评论

相关推荐

10-17 12:16
同济大学 Java
7182oat:快快放弃了然后发给我,然后让我也泡他七天最后再拒掉,狠狠羞辱他一把😋
点赞 评论 收藏
分享
vegetable_more_exercise:1-1.5万,没错啊,最少是1人民币,在区间内
点赞 评论 收藏
分享
11-20 17:33
已编辑
门头沟学院 嵌入式工程师
小米汽车 底软测开岗 n*15(15大概率拿不到) 双非硕
点赞 评论 收藏
分享
21 6 评论
分享
牛客网
牛客企业服务