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

主要是注意完播率的定义。