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

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

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

SELECT uid, ROUND(AVG(score),0) AS avg_score, ROUND(AVG(time_took),1) AS avg_time_took
FROM (
  SELECT er.uid, 
  CASE WHEN submit_time IS NOT NULL THEN TIMESTAMPDIFF(MINUTE, start_time, submit_time) ELSE duration END AS time_took, 
  CASE WHEN score IS NOT NULL THEN score ELSE 0 END AS score
  FROM exam_record AS er LEFT JOIN examination_info AS ei ON er.exam_id = ei.exam_id
  LEFT JOIN user_info AS ui ON er.uid = ui.uid
  WHERE level = 0 AND difficulty = 'hard'
) AS t1
GROUP BY uid


① 对于t1表的思路与解释:

创建t1表的时,首先将三张表进行左连接,并筛选 用户是0级 且 试卷难度为hard 的记录

SELECT子句得到uid,两个条件判断语句:

1. 如果submit_time非空,那么就返回submit_time - start_time的差值(以分钟为单位), 注意TIMESTAMPDIFF只适用于DATE类型的数据,以及会向下(即59秒也会被记为0分钟);若submit_time为空,则返回duration

2. 当score非空,那么就返回score,其余则返回0

② 对建立的t1表取score的平均和time_took的平均,并使用ROUND进行四舍五入。

全部评论

相关推荐

SHC2:关键问题是你这三段实习是三个不同的岗位…你这样子秋招就是只有一段实习的本科生..
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务