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

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

https://www.nowcoder.com/practice/5c03f761b36046649ee71f05e1ceecbf

SELECT * 
FROM (
    SELECT a.uid, a.exam_cnt, IFNULL(b.question_cnt, 0) question_cnt
    FROM (
        SELECT uid, COUNT(*) exam_cnt
        FROM exam_record
        WHERE DATE_FORMAT(submit_time, '%Y') = 2021
        GROUP BY uid
    ) a 
    LEFT JOIN (
        SELECT uid, COUNT(*) question_cnt
        FROM practice_record
        WHERE DATE_FORMAT(submit_time, '%Y') = 2021
        GROUP BY uid
    ) b ON a.uid = b.uid
    UNION
    SELECT b.uid, IFNULL(a.exam_cnt, 0) exam_cnt, b.question_cnt
    FROM (
        SELECT uid, COUNT(*) exam_cnt
        FROM exam_record
        WHERE DATE_FORMAT(submit_time, '%Y') = 2021
        GROUP BY uid
    ) a 
    LEFT JOIN (
        SELECT uid, COUNT(*) question_cnt
        FROM practice_record
        WHERE DATE_FORMAT(submit_time, '%Y') = 2021
        GROUP BY uid
    ) b ON a.uid = b.uid
) a
WHERE a.uid IN (
    SELECT uid 
    FROM exam_record
    WHERE exam_id = (
        SELECT exam_id 
        FROM examination_info
        WHERE tag = 'SQL' AND difficulty = 'hard'
    ) 
    AND uid IN (
        SELECT uid 
        FROM user_info
        WHERE `level` = 7
    )
    GROUP BY uid 
    HAVING AVG(score) >= 80
)
ORDER BY exam_cnt ASC, question_cnt DESC;

全部评论

相关推荐

04-21 16:05
已编辑
山西大学 Java
不吃压力👿:我和你简历差不多,好多看到28就不回复了,回复的基本是全栈或低代码
点赞 评论 收藏
分享
不知名bang:感觉三个项目可以融在一起,比如上层是用手写的epoll,然后到tcp聊天层,然后你写了一个后台监控(不过我也不懂c++,但是感觉写一个大项目比三个小项目要好)
我的求职进度条
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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