题解 | #0级用户高难度试卷的平均用时和平均得分#
0级用户高难度试卷的平均用时和平均得分
http://www.nowcoder.com/practice/bb474c6cbd77478fb6d9fc86934d0ebb
问题分析
请输出每个0级用户所有的高难度试卷考试平均用时和平均得分,未完成的默认试卷最大考试时长和0分处理。
- 刷选出0级用户和其作答的难度为hard的试卷——left jion三表联接或两表联接+子查询,本人采用后者
- 求其平均用时,结果取整,未完成的试卷用时按试卷的考试时长计算——四舍五入函数round()/平均值函数avg()/条件判断函数if()/计算时间差函数timestampdiff()
- 求其平均得分,结果保留1位小数,未完成的试卷按0分计算——四舍五入函数round()/平均值函数avg()/条件判断函数if()/计算时间差函数timestampdiff()
答案参考
SELECT uid ,round(avg(if(score is null,0,score)))avg_score ,round( avg(if(submit_time is null,duration ,timestampdiff(minute,start_time,submit_time))) ,1)avg_time_took FROM exam_record left join examination_info using(exam_id) WHERE uid in (SELECT uid FROM user_info WHERE level=0) and difficulty='hard' GROUP BY uid;