题解 | #近一个月发布的视频中热度最高的top3视频#

近一个月发布的视频中热度最高的top3视频

https://www.nowcoder.com/practice/0226c7b2541c41e59c3b8aec588b09ff

# 1. 热度表
    # 筛选出最近一个月发布的
# 2. 新鲜度表
    # 最近无播放日期:现在的日期-该视频最后播放的日期。
# 3. 左联结上面两个表进行计算,选择前3

select 
    video_id,
    round((complete_rate*100+like_cnt*5+comment_cnt*3+retweet_cnt*2)*(1/(no_day+1))) as hot_index
from(
    -- 1. 热度表
    -- 每类视频的视频完播率,点赞数,评论数,转发数
    select 
        video_id,
        sum(if(timestampdiff(second,start_time,end_time)>=duration,1,0))/count(start_time) as complete_rate,
        sum(if_like) as like_cnt,
        count(comment_id) as comment_cnt,
        sum(if_retweet) as retweet_cnt
    from tb_user_video_log
    left join tb_video_info using(video_id)
    where datediff((select max(end_time) from tb_user_video_log),release_time)<=29 # 筛选最近一个月发布的视频,当前日期-发布日期<=29天
    group by video_id 
) h_t
left join 
(
    -- 2. 新鲜度表
    -- 每类视频最近无播放天数
    select
        video_id,
        datediff((select max(end_time) from tb_user_video_log),last_date) as no_day -- 最近无播放的天数
    from(
        select 
            video_id,
            max(end_time) as last_date
        from tb_user_video_log
        group by video_id
    ) f_t  
) t  using(video_id)
order by hot_index desc
limit 3

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-01 12:22
点赞 评论 收藏
分享
06-02 15:17
门头沟学院 Java
心爱的idea:怎么会呢 应该是打招呼有问题 问就说实习6个月全国可飞随时到岗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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