SELECT tag, CONCAT(ROUND(100*avg(ratio),2),'%') avg_play_progress
FROM(
SELECT a.uid, a.video_id, b.tag, 
    CASE WHEN a.tt>=b.duration THEN 1
    ELSE a.tt/b.duration END ratio
FROM
(SELECT uid, video_id, 
    UNIX_TIMESTAMP(end_time) - UNIX_TIMESTAMP(start_time) tt
FROM tb_user_video_log
) a 
LEFT JOIN 
(SELECT video_id, tag, duration
FROM tb_video_info
GROUP BY video_id, tag, duration
) b 
on a.video_id=b.video_id
) m1 
GROUP by tag
having avg(ratio)>0.6
ORDER by avg(ratio) DESC