# 为了省空间多了一些步骤,不过更加清晰了 SELECT tag, CONCAT(avg, '%') AS avg_play_progress #先把大于60条件完成以后再使用concat合并 FROM( SELECT tag, ROUND(AVG(IF(play_percent > 100, 100, play_percent)), 2) AS avg #2.计算各类tag平均播放进度,注意条件 FROM( SELECT tag, duration, 100 * TIMESTAMPDIFF(SECOND, start_time, end_time) / duration AS play_percent #1.计算播放进度 FROM tb_user_video_log tu JOIN tb_video_info tv ON tu.video_id = tv.video_id ) AS tb1 GROUP BY tag HAVING avg > 60 #条件平均进度大于60 ) AS tb2 ORDER BY avg_play_progress DESC #最后条件播放进度倒序排序