题解 | #各个视频的平均完播率#

各个视频的平均完播率

https://www.nowcoder.com/practice/96263162f69a48df9d84a93c71045753

题目思路: 
     有两个表 tb_user_video_log和tb_video_info.     
     1 观察两个表的结构可知 : uid与viedo_id是一对多的关系    ;  video_id与start_time是多对多关系    ;   video_id与end_time是多对多关系    ;   video_id与duration是多对一关系
     2 分析题目-计算2021年里有播放记录的每个视频的完播率每个视频的完播率,可知:
                2021年:    用start_time         
                有播放记录(总播放次数) : 统计  tb_user_video_log表每个video_id的行数
                完播率:   完成播放次/总播放次数=(结束观看时间-开始播放时间>=视频时长时)/总播放次数
上代码:
select  
    video_id,
    round(sum(panduan)/count(*),3) as     avg_comp_play_rate
from
    (select 
        a.video_id,
        if(timestampdiff(second,start_time,end_time)>=duration,1,0) as panduan
    from 
        tb_user_video_log a
        left join tb_video_info b
        on a.video_id=b.video_id
    where 
        year(start_time)='2021'
    ) aa
group by 
    video_id
order by 
    avg_comp_play_rate desc

#题解##sql#
全部评论

相关推荐

祈求顺利毕业😁:简历很好了,多投吧牛油😂。主要是环境不好,大家也卷
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务