select 
cid,
round(cast(max(cnt) as float),3) as max_peak_uv
from(
    select
    a.cid,
    sum(if(a.start_time between b.start_time and b.end_time,1,0)) as cnt
    from play_record_tb a join play_record_tb b on a.cid=b.cid
    group by a.id,a.cid,a.start_time
) t
group by cid
order by max_peak_uv desc
limit 3

1.自连接:将 play_record_tb 表与自身连接(a 和 b),条件是 a.cid = b.cid,确保只统计同一内容的播放记录。

统计并发:对于每条播放记录 a,检查其 start_time 是否落在其他记录 b 的播放时间段(b.start_time 到 b.end_time)内。如果是,则记为 1,否则记为 0。

分组:按 a.ida.cida.start_time 分组,确保每条记录单独计算其开始时刻的并发数。