SELECT 
    tag,
    COUNT(tag) AS tag_cnt
FROM exam_record
JOIN examination_info USING(exam_id)
WHERE uid IN (
    SELECT uid
    FROM exam_record
    WHERE submit_time IS NOT NULL
    GROUP BY uid
    HAVING COUNT(exam_id) / count(distinct DATE_FORMAT(start_time, "%Y%m"))>= 3
) 
GROUP BY tag
ORDER BY tag_cnt DESC;
  • 题目有问题,只使用uid但是计算的时候没有WHERE剔除那些uid没有完成的试卷,自然将其计入数量,修改这一错误后反而与答案不符合,所以答案存在问题。