题解 | #平均播放进度大于60%的视频类别#
平均播放进度大于60%的视频类别
http://www.nowcoder.com/practice/c60242566ad94bc29959de0cdc6d95ef
问题:计算各类视频的平均播放进度,将进度大于60%的类别输出。
注: 播放进度=播放时长÷视频时长*100%,当播放时长大于视频时长时,播放进度均记为100%。 结果保留两位小数,并按播放进度倒序排序。
思考步骤:
- 各类视频
group by
- 平均播放进度
avg
- 大于60%
where /having
考虑到先聚合又条件即 选择having
- 播放时长
考虑到视频时长以秒为单位,故second
timestampdiff(second,t1,t2)
- 大于100% 按100%算 有个判断
case
when then
else end
或者 if
- 其他考点
保留两位
round(列,2)
加上%
concat(数字,'%')
降序
order by desc
完整答案
select
tag,
concat(round(avg(play_progress)*100,2),'%') as avg_play_progress
from
(select
t2.tag as tag,
case when timestampdiff(second,t1.start_time,t1.end_time)/t2.duration >1 then 1
else timestampdiff(second,t1.start_time,t1.end_time)/t2.duration end play_progress
from
tb_user_video_log t1 left join
tb_video_info t2 on
t1.video_id=t2.video_id) s
group by tag
having avg(play_progress)>0.6
order by avg_play_progress desc