题解 | 满足条件的用户的试卷完成数和题目练习数

# 结构化拆解问题
SELECT t1.uid, t1.exam_cnt, IFNULL(t2.question_cnt, 0) AS question_cnt
FROM (
    SELECT er.uid, COUNT(er.exam_id) AS exam_cnt
    FROM exam_record AS er
    WHERE YEAR(submit_time) = 2021
    GROUP BY er.uid) AS t1 # 先查询每个用户在2021年做多少试卷
LEFT OUTER JOIN 
    (
    SELECT pr.uid, COUNT(pr.question_id) AS question_cnt
    FROM practice_record AS pr
    WHERE YEAR(submit_time) = 2021
    GROUP BY pr.uid) AS t2 # 再查询每个用户在2021年刷了多少题
ON t1.uid = t2.uid
WHERE t1.uid IN (
    SELECT er.uid
    FROM exam_record AS er
    INNER JOIN examination_info AS ei 
    ON er.exam_id = ei.exam_id
    LEFT OUTER JOIN user_info AS u
    ON er.uid = u.uid
    WHERE u.level = 7 AND ei.tag = 'SQL' AND ei.difficulty = 'hard'
    GROUP BY er.uid
    HAVING AVG(er.score) > 80) # 作为条件筛选

ORDER BY exam_cnt, question_cnt DESC;

全部评论

相关推荐

狄文君:多段项目经历 + 专业技能拉满,这简历很能打,坐等好消息!
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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