with tt1 as (
select t1.video_id,
t1.start_time,
t1.end_time,
t1.if_like,
t1.if_retweet,
t1.comment_id,
t2.duration,
case when unix_timestamp(end_time) - unix_timestamp(start_time) >= t2.duration then 1 else 0 end as wanbo -- 1为完播 0为未完播
from tb_user_video_log t1
join tb_video_info t2
on t1.video_id = t2.video_id
where release_time between date_sub((select max(end_time) from tb_user_video_log),INTERVAL 29 DAY) and (select max(end_time) from tb_user_video_log)
and end_time between date_sub((select max(end_time) from tb_user_video_log),INTERVAL 29 DAY) and (select max(end_time) from tb_user_video_log)
), -- select * from tt1;
tt2 as(
select video_id,
sum(if(wanbo = 1,1,0))/count(wanbo) as wanbolv,
sum(if_like) as dianzanshu,
count(comment_id) as pinglunshu,
sum(if_retweet) as zhuanfashu,
datediff(date_format((select max(end_time) from tb_user_video_log),'%Y-%m-%d'),date_format(max(end_time),'%Y-%m-%d')) as wubofangtianshu
from tt1 group by video_id
) select
video_id,
round((100*wanbolv+5*dianzanshu+3*pinglunshu+2*zhuanfashu)*(1/(wubofangtianshu+1))) as hot_index
from tt2 order by hot_index desc limit 3;