SELECT
  tag,
  COUNT(tag) tag_cut
FROM
  exam_record
  INNER 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_cut DESC;