select
    u.video_id,
    round(SUM(CASE WHEN timestampdiff(second, u.start_time, u.end_time) >= v.duration THEN 1 ELSE 0 END) / count(*), 3) as avg_comp_play_rate
from tb_user_video_log u
join tb_video_info v
    using (video_id)
where year(start_time) = 2021
group by video_id
order by avg_comp_play_rate desc