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

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

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

通过代码

DATE_SUBselect video_id,
       round((100 * avg_rate + 5 * likes + 3 * comments + 2 * retweets) * (1 / (end_time + 1)), 0) hot_index
from (SELECT u.video_id                                                                                   video_id,
             (sum(if((TIMESTAMPDIFF(SECOND, start_time, end_time) >= duration), 1, 0)) / COUNT(*))        avg_rate,
             sum(if_like)                                                                                 likes,
             count(comment_id)                                                                            comments,
             sum(if_retweet)                                                                              retweets,
             timestampdiff(day, date(max(end_time)), (select date(max(end_time)) from tb_user_video_log)) end_time
      FROM tb_user_video_log u
               JOIN
           tb_video_info i
           ON
               u.video_id = i.video_id
      WHERE date(release_time) between
                DATE_SUB((select max(end_time) from tb_user_video_log), INTERVAL 30 day)
                and (select max(end_time) from tb_user_video_log)
      GROUP BY u.video_id
     ) t
order by hot_index desc
limit 3

思路

先上题目要求

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

注:

热度=(a视频完播率+b点赞数+c评论数+d转发数)新鲜度;

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

当前配置的参数a,b,c,d分别为100、5、3、2。

最近播放日期以end_time-结束观看时间为准,假设为T,则最近一个月按[T-29, T]闭区间统计。

结果中热度保留为整数,并按热度降序排序。


首先是视频完播率,这个我们之前做过就是这一类的第一题,这里就不重复了,

然后点赞数、转发数都很简单

问题是评论数:这里给出的数据是comment_id ,后来想想发现完全没问题:一条记录是一次播放,所以最多一个评论,没毛病。

然后是新鲜度:1/整个表最后一个播放时间,距离该视频最后一次播放时间天数+1

但是这里有问题,而且以前我也遇到过这个问题,连续两次作答试卷的最大时间窗

就是timestampdiff或者出题人的锅!

最近30天,我用的函数DATE_SUB

DATE_SUB() 函数从日期减去指定的时间间隔。

语法

DATE_SUB(date,INTERVAL expr type)

date 参数是合法的日期表达式。expr 参数是希望添加的时间间隔。

一天一个Mysql 文章被收录于专栏

学习,一天一个mysql

全部评论

相关推荐

头像
昨天 12:47
已编辑
中国地质大学(武汉) Java
你出生在农村,与其它农村小孩子无异小学时你对成绩没有概念,只感觉上课不听课也是无聊,只知道不写完作业会被老师罚站一到考试,自己成绩总是名列靠前,即使偶尔落后,你也从不在意中学时你觉得课本的东西很简单,随便学学就会了,并没有大量刷题你总是想不通,那些所谓的数学物理中难题,明明是在送分,为什么你的同学总是想不出解题方法高中时这三年你过的不容易,晚睡早起,给了自己很多压力.但是你也发现自己是有些小聪明的,你感觉班里有些同学很刻苦,但成绩比你差远了。那些数学题和物理题的陷阱,同学一遍遍踩坑,但是你总能发现并避开它们.“为了父母的期盼,为了恩师的厚望,为了天赐的智慧,为了青春的理想......”“天行健...
创作助手_刘北:其实,这种已经是神童级别的了,不费吹灰之力就能拿到自己想要的东西,就像机器按照程序走了一遍,就像我小时候看爱情公寓,觉得他们都很惨,几个人只能挤在一个房间里合租,但是好在他们有一群非常好的朋友,随着时间的推移,慢慢长大了,在看爱情公寓的时候,觉得他们都很厉害,博士、留学生、***、电台公子,数学天才,任何一个都是我可望而不可即的,更别说可以在异地认识一群更好的朋友了,所以呢,人还是要自给自足,满足当下,不要攀比,意气风发的且有理想的18岁少年永远都存在,只不过随着时间的推移他被你包裹在了洋葱的最深处。
点赞 评论 收藏
分享
深夜书店vv:腾讯是这样的,去年很多走廊都加桌子当工区
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务