select log.video_id,
round(
sum(CASE WHEN log.end_time-log.start_time>=info.duration THEN 1 ELSE 0 END)
/count(log.video_id),3) as avg_comp_play_rate
from tb_user_video_log as log
left outer join tb_video_info as info
on log.video_id=info.video_id
where year(log.start_time)=2021
group by log.video_id
order by avg_comp_play_rate desc