WITH t1 AS (
SELECT tag,
ROUND(AVG(IF(
TIMESTAMPDIFF(SECOND, start_time, end_time) / duration > 1,
100,
TIMESTAMPDIFF(SECOND, start_time, end_time) / duration * 100
)) OVER (PARTITION BY tag),2) AS avg_play_progress
FROM tb_user_video_log tu
LEFT JOIN tb_video_info tv
ON tu.video_id = tv.video_id
)
SELECT DISTINCT tag,
CONCAT (avg_play_progress, '%') AS avg_play_progress
FROM t1
WHERE avg_play_progress > 60
ORDER BY avg_play_progress DESC;
# 注意一点就是,秒数相减要采用 TIMESTAMPDIFF(单位,start,end)函数

京公网安备 11010502036488号