with t as ( select t1.video_id ,count(case when timestampdiff(SECOND,t1.start_time,t1.end_time) >= t2.duration then 1 end) as bfwc ,count(1) as bf from tb_user_video_log t1 left join tb_video_info t2 on t1.video_id = t2.video_id where year(t1.start_time) = 2021 group by t1.video_id ) select video_id,round(bfwc/bf,3) as avg_comp_play_rate from t order by round(bfwc/bf,3) desc;