题解 | #平均播放进度大于60%的视频类别#
平均播放进度大于60%的视频类别
http://www.nowcoder.com/practice/c60242566ad94bc29959de0cdc6d95ef
-- 计算各类视频的平均播放进度,将进度大于60%的类别输出。
-- 播放进度=播放时长÷视频时长*100%,
-- 1、关联视频信息,计算播放时长 2、先计算每条视频播放进度,用小数表示 3、分类统计播放进度平均数,转换为分数
select e.tag,concat(e.avg_progress,'%') avg_progress_p from (
SELECT
d.tag,
round(AVG(d.play_progress)*100,2)
avg_progress
FROM
(SELECT
*,
IF(play_duration >= duration, 1, play_duration / duration) play_progress
FROM
(SELECT
a.*,
b.duration,
b.tag,
TIMESTAMPDIFF(SECOND, a.start_time, a.end_time) play_duration
FROM
tb_user_video_log a
INNER JOIN tb_video_info b ON a.video_id = b.video_id) c) d
GROUP BY d.tag
HAVING avg_progress > 60
ORDER BY avg_progress DESC ) e;