SELECT
tag,
count(*) tag_cnt
FROM
exam_record r
JOIN examination_info i USING (exam_id)
WHERE
uid IN (
SELECT
uid
FROM
exam_record
WHERE
submit_time IS NOT NULL
AND score IS NOT NULL
GROUP BY
uid
HAVING
count(DISTINCT exam_id, start_time) / count(
DISTINCT DATE_FORMAT(start_time, "%Y%m")
) >= 3
)
GROUP BY
tag
ORDER BY
tag_cnt DESC
tag,
count(*) tag_cnt
FROM
exam_record r
JOIN examination_info i USING (exam_id)
WHERE
uid IN (
SELECT
uid
FROM
exam_record
WHERE
submit_time IS NOT NULL
AND score IS NOT NULL
GROUP BY
uid
HAVING
count(DISTINCT exam_id, start_time) / count(
DISTINCT DATE_FORMAT(start_time, "%Y%m")
) >= 3
)
GROUP BY
tag
ORDER BY
tag_cnt DESC