SELECT
    video_id,
    ROUND((AVG(IF(TIMESTAMPDIFF(SECOND,start_time,end_time)>=duration,1,0))*100 +
    SUM(if_like)*5 +
    COUNT(comment_id)*3 +
    SUM(if_retweet)*2) /
    (DATEDIFF(today,MAX(end_time))+1),0) hot_index
FROM(
    SELECT
        uvl.*,
        vi.duration,
        vi.release_time,
        MAX(end_time) OVER() today
    FROM
        tb_user_video_log uvl
    INNER JOIN
        tb_video_info vi
        ON uvl.video_id = vi.video_id
)t
WHERE
    DATEDIFF(today, release_time) <= 29
GROUP BY
    video_id,today
ORDER BY
    hot_index DESC
LIMIT
    3