题解 | #统计每个用户的平均刷题数#

统计每个用户的平均刷题数

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

这道题目要求我们计算山东大学用户在不同难度下的平均答题量。我们需要从三个表中提取数据:user_profilequestion_practice_detailquestion_detail

解题步骤:

  1. 连接表:我们需要将 user_profile 表与 question_practice_detail 表通过 device_id 进行连接,然后再与 question_detail 表通过 question_id 进行连接,以获取每个用户的答题难度信息。

  2. 过滤数据:只选择 university 为 "山东大学" 的用户。

  3. 分组计算:根据 difficult_level 进行分组,计算每个难度级别的平均答题量。

  4. 计算平均值:对于每个分组,计算该组内用户的答题总数,并除以用户数量,得到平均答题量。

  5. 格式化输出:将结果保留四位小数。

以下是实现上述逻辑的 SQL 查询:

SELECT 
    u.university, 
    qd.difficult_level, 
    ROUND(COUNT(qpd.id) / COUNT(DISTINCT u.device_id), 4) AS avg_answer_cnt
FROM 
    user_profile u
JOIN 
    question_practice_detail qpd ON u.device_id = qpd.device_id
JOIN 
    question_detail qd ON qpd.question_id = qd.question_id
WHERE 
    u.university = '山东大学'
GROUP BY 
    u.university, qd.difficult_level
ORDER BY 
    qd.difficult_level;
全部评论
应该可以不用再按照学校分组了吧?
1 回复 分享
发布于 08-13 16:23 四川
为什么不可以先按照难度分组,再筛出山东大学的数据呢(这样的话会报错)
点赞 回复 分享
发布于 09-20 19:40 广东

相关推荐

WhiteAlbum...:学院本2中大厂垂直实习➕acm比赛 秋招0面试
点赞 评论 收藏
分享
09-11 19:49
门头沟学院 Java
做个有文化的流氓:对牛弹琴了
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

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