-- 请你找到高难度SQL试卷得分平均值大于80并且是7级的红名大佬,统计他们的2021年试卷完成数和题目练习数, 只保留2021年有试卷完成记录的用户。结果按试卷完成数升序,按题目练习数降序。
-- 先找到红名大佬uid,再统计试卷完成数和题目练习数
-- 1、用户得分平均值,分组求平均数。先关联查询,再过滤,再分组求平均数,再过滤
2、统计用户试卷完成数
3、统计用户题目练习数
4、左连接查询
SELECT
d.uid,
IF(e.exam_cnt IS NULL, 0, e.exam_cnt) exam_cnt,
IF(f.question_cnt IS NULL,
0,
f.question_cnt) question_cnt
FROM
(SELECT
a.uid
FROM
exam_record a
INNER JOIN examination_info b ON a.exam_id = b.exam_id
INNER JOIN user_info c ON a.uid = c.uid
WHERE
b.tag = 'SQL' AND b.difficulty = 'hard'
AND c.level = 7
GROUP BY uid
HAVING AVG(a.score) > 80) d
LEFT JOIN
(SELECT
uid, COUNT(DISTINCT exam_id) exam_cnt
FROM
exam_record
WHERE
YEAR(submit_time) = 2021
GROUP BY uid) e ON d.uid = e.uid
LEFT JOIN
(SELECT
uid, COUNT(question_id) question_cnt
FROM
practice_record
WHERE
YEAR(submit_time) = 2021
GROUP BY uid) f ON d.uid = f.uid
ORDER BY exam_cnt ASC , question_cnt DESC;