with 
t1 as(
    select
        i.tag,
        p.video_id,
        date_format(p.start_time,'%Y-%m-%d') pdate,
        p.if_retweet
    from 
        tb_user_video_log p left join tb_video_info i using(video_id)
    where 
        p.if_follow<>0 or p.if_like<>0 or p.if_retweet<>0 or p.comment_id is not null),
t2 as(
    select
        tag,
        video_id,
        pdate,
        max(pdate) over(order by pdate desc) as max_pdate,
        if_retweet
    from t1)

select
    tag,
    sum(if_retweet) as retweet_cnt,
    round(sum(if_retweet)/count(*),3) as retweet_rate
from t2
where timestampdiff(day,pdate,max_pdate)<=29
group by tag
order by retweet_rate desc