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

各个视频的平均完播率

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

//思路:
1.先计算出总的播放次数(注意筛选条件是2021年)
SELECT video_id,COUNT(video_id) FROM tb_user_video_log where year(start_time)=2021 GROUP BY video_id ;
2.计算出每个视频被播放了多少秒(同时也要注意筛选条件是2021)
SELECT video_id,TIME_TO_SEC(TIMEDIFF(end_time,start_time)) as Btime FROM tb_user_video_log where year(start_time)=2021;
3.计算出每一个视频被完整播放完的次数
SELECT tb_video_info.video_id,sum(if(tb_video_info.duration<=T2.Btime,1,0)) as FinshClick
FROM tb_video_info natural join (SELECT video_id,TIME_TO_SEC(TIMEDIFF(end_time,start_time)) as Btime FROM tb_user_video_log where year(start_time)=2021) as T2 GROUP BY tb_video_info.video_id;
4.计算平均完播率
SELECT
    T1.video_id,
    ROUND(FinshClick / ALLClick, 3) AS avg_comp_play_rate
FROM
    (
        SELECT
            video_id,
            COUNT(video_id) AS ALLClick
        FROM
            tb_user_video_log
        where year(start_time)=2021
        GROUP BY
            video_id
    ) AS T1
    NATURAL join (
        SELECT
            tb_video_info.video_id,
            sum(if (tb_video_info.duration <= T2.Btime, 1, 0)) as FinshClick
        FROM
            tb_video_info
            natural join (
                SELECT
                    video_id,
                    TIME_TO_SEC (TIMEDIFF (end_time, start_time)) as Btime
                FROM
                    tb_user_video_log
                WHERE YEAR(start_time)=2021
            ) as T2
        GROUP BY
            tb_video_info.video_id
    ) AS T3
ORDER BY
    avg_comp_play_rate DESC;

全部评论

相关推荐

07-18 13:49
门头沟学院 Java
26小林不会梦到感谢...:这个点还在面暑期嘛不是马上开秋招了
点赞 评论 收藏
分享
07-31 14:08
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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