with t1 as (
    select vl.video_id, vi.tag, vl.if_retweet,
        date_format(vl.start_time,'%Y-%m-%d') start_time,
        max( date_format(vl.end_time,'%Y-%m-%d')) over() today
    from tb_user_video_log vl join tb_video_info vi on vl.video_id = vi.video_id
), t2 as (
    select video_id , tag, if_retweet
    from t1 
    where datediff(today, start_time) < 30
), t3 as (
    select distinct tag, sum(if_retweet) over(partition by tag) retweet_cut, count(1) over(partition by tag) cnt
    from t2
), t4 as (
    select tag, retweet_cut, cast((retweet_cut/cnt) as decimal(16,3)) retweet_rate
    from t3
    order by retweet_cut/cnt desc
)
select * from t4