## 先增加一列作为是否完播,然后计数:完播的数量/总数量
## 结束时间-开始时间:TIMESTAMPDIFF(second,start_time,end_time)
## duration >= TIMESTAMPDIFF(second,start_time,end_time)
## IF((end_diff>duration,'%Y%m')1,0) AS end_video

SELECT video_id,ROUND(SUM(end_video)/COUNT(end_video),3) AS avg_comp_play_rate
FROM(
    SELECT video_id, IF(end_diff >= duration,1,0) AS end_video
    FROM(
        SELECT uid,a.video_id,start_time,end_time,duration,TIMESTAMPDIFF(second,start_time,end_time) AS end_diff
        FROM tb_user_video_log a
        LEFT JOIN tb_video_info b
        ON a.video_id = b.video_id
        )t1
    WHERE YEAR(start_time) = 2021
    )t2
GROUP BY video_id
ORDER BY avg_comp_play_rate DESC