题解 | #近一个月发布的视频中热度最高的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
全部评论
不需要像其他答案那样嵌套多个select
点赞
送花
回复 分享
发布于 2022-01-23 20:47
大佬你好, 可以解释一下第8行DATEDIFF(DATE((SELECT MAX(end_time) FROM tb_user_video_log)), MAX(DATE(end_time))) 这行吗,没看懂这条的max,期待回复 感谢
点赞
送花
回复 分享
发布于 2022-01-29 00:18
国泰君安
校招火热招聘中
官网直投
您好,想请问一下,把 case when换成sum(if(end_time-start_time >= duration,1,0))/count(*) ,算出来为啥不对呢?
点赞
送花
回复 分享
发布于 2022-02-03 14:42
end_time-start_time大于1分钟就是100,他不是60制,所以要用timestampdiff
点赞
送花
回复 分享
发布于 2022-03-16 15:54
为什么要left join 啊?有大佬解释下吗
点赞
送花
回复 分享
发布于 2022-03-18 21:44
line 8看不懂
点赞
送花
回复 分享
发布于 2022-05-10 13:51

相关推荐

9 1 评论
分享
牛客网
牛客企业服务