题解 | #满足条件的用户的试卷完成数和题目练习数#
满足条件的用户的试卷完成数和题目练习数
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;