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

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

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

WITH a1 AS (
           SELECT uid, COUNT(*) AS exam_cnt
           FROM user_info a JOIN exam_record c USING (uid)
                            JOIN examination_info b USING (exam_id)
           WHERE level >= 7
             AND tag = 'SQL'
             AND difficulty = 'hard'
             AND YEAR(c.start_time) = '2021'
           GROUP BY uid
           HAVING AVG(score) >= 80
           ), #找到高难度SQL试卷得分平均值大于80并且是7级的红名大佬
     a2 AS (
     SELECT uid, IFNULL(COUNT(question_id),0) AS question_cnt
     FROM practice_record
     WHERE uid IN (
                  SELECT uid
                  FROM a1
                  )
       AND YEAR(submit_time) = '2021'
     GROUP BY uid
     ),       #统计他们的2021题目总练习次数
     a3 AS (
     SELECT uid, IFNULL(COUNT(*),0) AS exam_cnt
     FROM exam_record
     WHERE uid IN (
                  SELECT uid
                  FROM a1
                  )
       AND YEAR(submit_time) = '2021'
     GROUP BY uid
     )        #统计他们的2021年试卷总完成次数
SELECT a3.uid, a3.exam_cnt, IFNULL(a2.question_cnt,0) AS question_cnt
FROM a2 LEFT JOIN a3 ON a2.uid = a3.uid
WHERE a3.uid IS NULL
UNION ALL
SELECT a3.uid, a3.exam_cnt, IFNULL(a2.question_cnt,0) AS question_cnt
FROM a2 RIGHT JOIN a3 ON a2.uid = a3.uid
ORDER BY 2, 3 DESC;
全部评论

相关推荐

04-08 10:36
已编辑
华南理工大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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