select 
tag
,concat(round(avg(play_progress)*100, 2), '%') as avg_play_progress
from
(
    select 
    info.tag
    ,case when timestampdiff(second, log.start_time, log.end_time) <= info.duration then timestampdiff(second, log.start_time, log.end_time)/info.duration 
     else 1
    end as play_progress
    from tb_user_video_log log
    left join tb_video_info info
    on log.video_id = info.video_id
) a
group by tag
having substring_index(avg_play_progress, '%', 1) > 60
order by avg_play_progress desc

为啥把having substring_index(avg_play_progress, '%', 1) > 60改成having avg_play_progress > 0.6就会多一个60%的结果