select video_id,
round(sum(case when timestampdiff(second,start_time,end_time)>=duration then 1 else 0 end)/count(start_time),3)
as avg_comp_play_rate 
from tb_user_video_log 
left join
tb_video_info 
using(video_id)
where year(start_time)=2021
group by video_id
order by avg_comp_play_rate desc