题解 | #SQL 37.0级用户高难度试卷的平均用时和平均得分#

0级用户高难度试卷的平均用时和平均得分

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

明确题意:

统计每个0级用户所有的高难度试卷考试平均用时和平均得分,未完成的默认试卷最大考试时长和0分处理。


问题分解:

  • 内连接试卷作答表、试卷信息表和用户信息表: exam_record JOIN examination_info USING(exam_id) JOIN user_info USING(uid)
  • 筛选0级用户、高难度试卷:WHERE level=0 and difficulty='hard'
  • 按用户分组:GROUP BY uid
  • 计算平均得分,未完成时0分处理:
    • AVG(COALESCE(score, 0)) as avg_score
    • 保留为整数:ROUND(x, 0)
  • 计算平均用时,未完成时最长用时:
    • AVG(IFNULL(TimeStampDiff(MINUTE, start_time, submit_time), duration))
    • 保留1位小数:ROUND(x, 1)

细节问题:

  • 表头重命名:as

完整代码:

SELECT uid, ROUND(AVG(COALESCE(score, 0)), 0) as avg_score,
    ROUND(AVG(
        IFNULL(TimeStampDiff(MINUTE, start_time, submit_time), duration)
    ), 1) as avg_time_took
FROM exam_record
LEFT JOIN examination_info USING(exam_id)
LEFT JOIN user_info USING(uid)
WHERE `level`=0 and difficulty='hard'
GROUP BY uid;
SQL进阶 文章被收录于专栏

SQL进阶step by step

全部评论

相关推荐

比亚迪汽车新技术研究院 硬件工程师 总包21左右 硕士
点赞 评论 收藏
分享
专心打鱼:互联网搬运工,贴子都要偷
点赞 评论 收藏
分享
10-28 11:04
已编辑
美团_后端实习生(实习员工)
一个2人:我说几个点吧,你的实习经历写的让人觉得毫无含金量,你没有挖掘你需求里的 亮点, 让人觉得你不仅打杂还摆烂。然后你的简历太长了🤣你这个实习经历看完,估计没几个人愿意接着看下去, sdk, 索引这种东西单拎出来说太顶真了兄弟,好好优化下简历吧
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务