**-题解 | #统计每个学校各难度的用户平均刷题数#

统计每个学校各难度的用户平均刷题数

https://www.nowcoder.com/practice/5400df085a034f88b2e17941ab338ee8

# 请你写一个SQL查询,计算不同学校、不同难度的用户平均答题量,根据示例,你的查询应返回以下结果(结果在小数点位数保留4位,4位之后四舍五入):

select university,c.difficult_level,
round(count(b.question_id) / count(distinct b.device_id ),4) avg_answer_cnt
from user_profile a,
question_practice_detail b,
question_detail c
where a.device_id =b.device_id and b.question_id=c.question_id
group by 
university,difficult_level

思路:

第一

,每个学校,各难度,涉及到对university,difficult_level利用GROUP BY分组实现;

第二

,用户平均答题数=所有用户答题总数/所有用户数,分母所有用户涉及到COUNT(DISTINCT ...)对登录设备账号进行剔重【由于存在一个设备账号多次登录的情况】,分子所有用户答题总数涉及COUNT()对question_id进行计数,不需要剔重;

第三

,需要对三个表进行联结FROM ...JOIN...ON...JOIN...ON...。

复制代码

1

2

3

4

5

6

SELECTu.university,

q2.difficult_level,

COUNT(q.question_id)/count(DISTINCTq.device_id) ASavg_answer_cnt

FROMuser_profile asu JOINquestion_practice_detail asq ONu.device_id=q.device_id

JOINquestion_detail asq2 ONq.question_id=q2.question_id

GROUPBYu.university,q2.difficult_level;

SQL错题 文章被收录于专栏

每天学习一遍 刷题刷题 越刷越强!

全部评论

相关推荐

昨天 12:43
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
牛客5655:其他公司的面试(事)吗
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务