select tag, avg_play_progress
from (
select tag, CONCAT(FORMAT(AVG(play_progress)*100, 2),'%') as avg_play_progress
from (
select uid, tag,
(case when watch_time >= duration then 1
else watch_time/duration end) as play_progress
from (
select uid, a.video_id,
TIMESTAMPDIFF(SECOND, start_time, end_time) as watch_time, tag, duration
from tb_user_video_log as a
left join tb_video_info as b
on a.video_id = b.video_id
) as c
) as d
group by tag
order by avg_play_progress desc
) as e
where CAST(SUBSTRING(avg_play_progress, 1, LENGTH(avg_play_progress)-1) AS DECIMAL(5,2)) > 60.00;