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

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

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

问题切分

筛选条件:近一个月发布的视频

要求的是:热度最高的top3视频

隐藏条件:结果中热度保留为整数,并按热度降序排序

重点问题

什么是近一个月发布的视频?

最近播放日期为2021-10-03,记作当天日期,即max(date(end_time))

近一个月播放就是datediff(date(release_time),select max(date(end_time) from tb_user_video_log) <= 29

热度怎么计算?

热度=(100*视频完播率+5*点赞数+3*评论数+2*转发数)*新鲜度

新鲜度=1/(最近无播放天数+1)

视频完播率=视频完播数/视频播放数=sum(if(timestampdiff(second,start_time,end_time)) >= duration,1,0)/count(start_time)

点赞数=sum(if_like)

评论数=sum(if(comment_id !='NULL',1,0))

转发数=sum(if_retweet)

最近无播放天数=当天日期-每个视频最近播放日期=datediff((select max(date(end_time)) from tb_user_video_log),(max(date(end_time)))

怎么求TOP3?

因为是所以视频中的TOP3,所以直接按照热度降序排列,然后limit3即可

select

    video_id,

    round((100*视频完播率+5*点赞数+3*评论数+2*转发数)*(1/(最近无播放天数+1)),0) hot_index

from

    (select

        tu.video_id,

        sum(if(timestampdiff(second,start_time,end_time) >= duration,1,0))/count(start_time) 视频完播率,

        sum(if_like) 点赞数,

        sum(if(comment_id !='NULL',1,0)) 评论数,

        sum(if_retweet) 转发数,

        datediff((select max(date(end_time)) from tb_user_video_log),(max(date(end_time)))) 最近无播放天数

    from

        tb_user_video_log tu left join tb_video_info tv

        on tu.video_id = tv.video_id

    where

        datediff((select max(date(end_time)) from tb_user_video_log),date(release_time)) <= 29

    group by 1) a

order by 2 desc

limit 3

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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