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

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

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

-- 查询最新日期
with t1 as (select max(date(end_time)) as latest_date from tb_user_video_log),

-- 查询近一个月发布的视频
t2 as (select video_id, duration from tb_video_info 
where date(release_time) >= date_sub((select latest_date from t1), interval 29 day)),

-- 整理互动表
t3 as (select log.video_id, log.end_time,
case when timestampdiff(second, start_time, end_time) >= t2.duration then 1 else 0 end as if_finish, if_like, if_retweet, 
case when comment_id is not null then 1 else 0 end as if_comment 
from 
tb_user_video_log log inner join t2 on log.video_id = t2.video_id),

t4 as (select video_id, sum(if_finish)/ count(*) as finish_rate, sum(if_like) as num_like,
sum(if_comment) as num_comment, sum(if_retweet) as num_retweet,
datediff((select latest_date from t1), max(date(end_time))) 
as num_nodays
from t3
group by video_id)

select video_id, round((100 * finish_rate + 5 * num_like + 3 * num_comment + 2 * num_retweet) 
/ (num_nodays + 1),0) as hot_index from t4 
order by hot_index desc limit 3

全部评论

相关推荐

02-26 13:56
已编辑
重庆财经学院 Java
King987:你有实习经历,但是写的也太简单了,这肯定是不行的,你主要要包装实习经历这一块,看我的作品,你自己包装一下吧,或者发我,我给你出一期作品
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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