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

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

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


select t1.video_id
,round(
((sum(case when timestampdiff(second,start_time,end_time)>=duration then 1 else 0 end ))/count(*)*100
+sum(if_like)*5
+count(comment_id)*3
+sum(if_retweet)*2)
*
1/(DATEDIFF((select date(max(end_time)) from tb_user_video_log),date(max(end_time)))+1)
) as hot_index
from tb_user_video_log t1,tb_video_info t2
where t1.video_id=t2.video_id
and DATEDIFF(DATE((SELECT MAX(end_time) FROM tb_user_video_log)),DATE(release_time)) <= 29
group by t1.video_id
order by hot_index desc
limiT 3
全部评论
line 8看不懂
点赞 回复 分享
发布于 2022-05-10 13:51
为什么要left join 啊?有大佬解释下吗
点赞 回复 分享
发布于 2022-03-18 21:44
end_time-start_time大于1分钟就是100,他不是60制,所以要用timestampdiff
点赞 回复 分享
发布于 2022-03-16 15:54
您好,想请问一下,把 case when换成sum(if(end_time-start_time >= duration,1,0))/count(*) ,算出来为啥不对呢?
点赞 回复 分享
发布于 2022-02-03 14:42
大佬你好, 可以解释一下第8行DATEDIFF(DATE((SELECT MAX(end_time) FROM tb_user_video_log)), MAX(DATE(end_time))) 这行吗,没看懂这条的max,期待回复 感谢
点赞 回复 分享
发布于 2022-01-29 00:18
不需要像其他答案那样嵌套多个select
点赞 回复 分享
发布于 2022-01-23 20:47

相关推荐

评论
10
1
分享

创作者周榜

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