# 最近无播放天数:这个视频最后一次播放的日期,距离最晚的天数的差值


# 下面的表给出了每个一个播放的视频的情况
with t as(
select l.video_id,
       case when timestampdiff(second,start_time,end_time) >= duration then 1 else 0 end if_full, 
       if_like,
       if_retweet,
       case when comment_id is not null then 1 else 0 end if_comment,
       datediff((select max(end_time) from tb_user_video_log),end_time) as days_not_play
from tb_user_video_log l 
join tb_video_info i on l.video_id = i.video_id
where datediff((select max(end_time) from tb_user_video_log), release_time) <= 29
)

# 根据总体的播放情况,来计算每一个视频的热度
select video_id, round((100 * sum(if_full) / count(if_full) +
                  5   * sum(if_like) +
                  3   * sum(if_comment) +
                  2   * sum(if_retweet)) *
                  1 / (min(days_not_play) + 1) ,0) hot_index
from t
group by video_id
order by hot_index desc
limit 3