with
    t as (
        select
            p1.id,
            p1.cid,
            sum(
                if (
                    p2.start_time between p1.start_time and p1.end_time,
                    1,
                    0
                )
            ) as peak_uv
        from
            play_record_tb p1
            join play_record_tb p2 on p1.cid = p2.cid
        group by
            1,
            2
    )
select
    cid,
    max(peak_uv) as max_peak_uv
from
    t
group by
    1
order by
    2 desc
limit
    3;