WITH general AS ( SELECT a.id, a.cid, a.start_time, SUM(IF(a.start_time BETWEEN b.start_time AND b.end_time, 1, 0)) AS cnt FROM play_record_tb AS a LEFT JOIN play_record_tb AS b ON a.cid = b.cid GROUP BY a.id, a.cid, a.start_time ) SELECT cid, ROUND(MAX(cnt), 3) AS max_peak_uv FROM general GROUP BY ...