题解 | #平均播放进度大于60%的视频类别#

平均播放进度大于60%的视频类别

https://www.nowcoder.com/practice/c60242566ad94bc29959de0cdc6d95ef

## 下面一种是本人自己的写法,sum()/count() 得到了平均值,相比于avg() 其实逻辑是相同的。第一钟是参考了题解的写法写的。功能上大体类似的哈。但是我的方法略显繁琐有点画蛇添足了。

# 平均播放进度大于60% 的视频类别  
    /*
    select tag,
           avg_play_progress 
      from (
    select tvi.tag ,
           round(avg(if(timestampdiff(second,tvl.start_time,tvl.end_time)>tvi.duration,1,
                        timestampdiff(second,tvl.start_time,tvl.end_time)/tvi.duration))*100,2) avg_play ,
           concat(round(avg(if(timestampdiff(second,tvl.start_time,tvl.end_time)>tvi.duration,1,
                        timestampdiff(second,tvl.start_time,tvl.end_time)/tvi.duration))*100,2),'%') avg_play_progress
      from tb_user_video_log tvl join tb_video_info tvi using(video_id) 
     group by tvi.tag 
     having avg_play > 60 
     order by avg_play desc 
     ) A ;  */

     select tag,
           avg_play_progress 
      from (
    select tvi.tag ,
           round(sum(if(timestampdiff(second,tvl.start_time,tvl.end_time)>tvi.duration,1,
                        timestampdiff(second,tvl.start_time,tvl.end_time)/tvi.duration))/count(tvl.start_time)*100,2) avg_play ,
           concat(round(sum(if(timestampdiff(second,tvl.start_time,tvl.end_time)>tvi.duration,1,
                        timestampdiff(second,tvl.start_time,tvl.end_time)/tvi.duration))/count(tvl.start_time)*100,2),'%') avg_play_progress
      from tb_user_video_log tvl join tb_video_info tvi using(video_id) 
     group by tvi.tag 
     having avg_play > 60 
     order by avg_play desc 
     ) A ;  

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务