# 为了省空间多了一些步骤,不过更加清晰了
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 #最后条件播放进度倒序排序

京公网安备 11010502036488号