题解 | #验证刷题效果,输出题目真实通过率#
验证刷题效果,输出题目真实通过率
https://www.nowcoder.com/practice/c4fd4b545a704877b510f18503ad523f
我给大家翻译翻译,题目三个指标我理解的意思是:
以一个question_id为一道题,每道题用户可以提交多次。
question_pass_rate : 每个用户的不同题目通过率,统计的是用户答过多少道题。每个有1的question_id 加总除以 question_id去重加总 ,
pass_rate:每个用户的答题通过率,统计的是用户答对过多少次题,有1的题目数除以答过的题目总数。
question_per_cnt:每个用户的平均答题数。总答题数/用户答过的题目种类
的用户的提交正确率 pass_rate 与每题目平均提交次数 question_per_cnt。
题目要求筛选出 : question_pass_rate > 60%
每个用户的不同题目通过率 > 0.6
SELECT d1.user_id, cnt/COUNT(distinct d1.question_id) question_pass_rate , #每个用户的不同题目提交通过率 SUM(IF(result_info = 1,1,0))/COUNT(d1.question_id) pass_rate ,# 每个用户的提交通过率 COUNT(d1.question_id)/COUNT(DISTINCT d1.question_id) question_per_cnt #每个用户的平均提交数 FROM done_questions_record d1 LEFT JOIN (SELECT user_id,sum(res) cnt FROM #统计用户答过的题目内一共答对了几道题。 ( #知道最后结果是什么,但没办法统计一共多少题最终状态是答对的。 SELECT user_id,question_id ,MAX(result_info) 'res' #有答题,且最终状态是1, FROM done_questions_record GROUP BY user_id,question_id ) T GROUP BY user_id ) d2 on d1.user_id=d2.user_id GROUP BY user_id HAVING question_pass_rate > 0.6