题解 | #平均播放进度大于60%的视频类别#
平均播放进度大于60%的视频类别
http://www.nowcoder.com/practice/c60242566ad94bc29959de0cdc6d95ef
平均播放进度
- 三个注意点
- 播放进度大于100%时,即播放时长>视频时长,直接等于100%
- 保留2位,按比率值降序排序
- 返回结果中出现
%
,使用concat
函数对比率值与符号进行连接
- 思路:与前一题一样,通过
tb_user_video_lag
计算每个用户的播放时长,左连接(这里内连接也可以)tb_video_info
表取得视频时长,进而计算播放进度以及每个tag的平均播放进度。
select
t2.tag,
concat(t2.rate,'%') as avg_play_progress
from (
select
t.tag,
round(avg(if(t.diff/ t.duration > 1, 1, t.diff/ t.duration)) * 100, 2) as rate
from (
select
tvi.tag,
tvi.duration,
timestampdiff(second, tuvl.start_time, tuvl.end_time) as diff
from tb_user_video_log as tuvl
left join tb_video_info as tvi on tuvl.video_id = tvi.video_id
) as t
group by t.tag
) t2
where t2.rate > 60
order by t2.rate desc;