select
video_id
, round((100 * rates + 5*likes + 3*comments + 2*retweets) / (no_play+1), 0) as hot_index
from (
select
t1.video_id
, t2.release_time
, max(t1.end_time) as max_date
, sum(if(timestampdiff(second, t1.start_time, t1.end_time) >= t2.duration, 1, 0)) / count(t1.video_id) as rates
, sum(t1.if_like) as likes
, count(t1.comment_id) as comments
, sum(t1.if_retweet) as retweets
, datediff((select max(end_time) from tb_user_video_log), max(t1.end_time)) as no_play
from tb_user_video_log t1 join tb_video_info t2 on t1.video_id = t2.video_id
where t2.release_time >= date_sub((select max(end_time) from tb_user_video_log), interval 29 day)
-- 检查视频是否在最近一个月发布,而不是比较 release_time 和 max(end_time)的时间差
group by t1.video_id
) a
order by hot_index desc
limit 3