第一次提交代码的时候直接用JOIN连接exam_record和practice_record,导致有一条用例没通过,后发现因为该用例中用户1005没有题目作答记录,故没有筛选进连接后的表中,改为left join后成功通过。

SELECT DISTINCT uid, nick_name, achievement
FROM (
    SELECT uid,
        MAX(DATE_FORMAT(start_time, '%Y%m')) OVER(PARTITION BY uid) AS recent_act_exam,
        MAX(DATE_FORMAT(p_r.submit_time, '%Y%m')) OVER(PARTITION BY uid) AS recent_act_practice
    FROM exam_record e_r LEFT JOIN
        practice_record p_r USING(uid)
)recent_act_table
    JOIN user_info USING(uid)
WHERE nick_name LIKE '牛客%号' 
    AND achievement BETWEEN 1200 AND 2500
    AND (recent_act_exam = '202109'
        OR recent_act_practice = '202109')