SELECT 
    t3.video_id,
    ROUND(t3.ranking / t3.count, 3) AS avg_comp_play_rate
FROM
-- 第三章子表,填充NULL为0
	(SELECT 
		video_id,
		MAX(count) AS count,
		CASE WHEN MAX(ranking) IS NULL THEN 0
		ELSE MAX(ranking)
		END AS ranking
	FROM
	 -- 第二章子表,计算播放视频总数量
	(SELECT 
	video_id,
	COUNT(id) AS count
	FROM tb_user_video_log
    WHERE YEAR(start_time) = 2021
	GROUP BY video_id) AS t1
	LEFT JOIN
	 -- 第一张子表,计算完播视频数量
	  (SELECT u1.video_id, 
	  ROW_NUMBER() OVER(PARTITION BY u1.video_id) AS ranking
	  FROM tb_user_video_log u1
	  LEFT JOIN tb_video_info v1 USING(video_id) 
	  WHERE DATE_ADD(u1.start_time , INTERVAL v1.duration SECOND) <= u1.end_time AND
		YEAR(start_time) = 2021) AS t2 USING(video_id)
	GROUP BY video_id) AS t3
    ORDER BY ROUND(t3.ranking / t3.count, 3) DESC;