-- 计算各类视频的平均播放进度
SELECT tag, 
    CONCAT(ROUND(AVG(IF(play_time >= duration, 100, play_time / duration * 100)), 2), '%') AS avg_play_progress
FROM (
    -- 筛选视频id和播放时长
    SELECT video_id, 
        TIMESTAMPDIFF(SECOND, start_time, end_time) AS play_time
    FROM tb_user_video_log
)play_time_t JOIN tb_video_info USING(video_id)
GROUP BY tag
HAVING ROUND(AVG(IF(play_time >= duration, 100, play_time / duration * 100)), 2) > 60.00
ORDER BY avg_play_progress DESC