with t1 as
( select substr(t1.start_time,1,10) as dt,
t2.tag,
sum(if_like) as like_cnt,
sum(if_retweet) as retweet_cnt
from
tb_user_video_log t1 join tb_video_info t2
on
t1.video_id = t2.video_id
where datediff('2021-10-01 00:00:00',start_time) < 7
group by
dt,tag
),
t2 as( -- 本币方法,顺着思路就想到一个个union o.0
select tag,dt,
sum(like_cnt) over(partition by tag order by dt, like_cnt) as sum_like_cnt_7d,
max(retweet_cnt) over(partition by dt, retweet_cnt ) as max_retweet_cnt_7d
from t1 where dt between date_sub('2021-10-01',INTERVAL 6 DAY) and '2021-10-01'
group by tag,dt
),
t3 as(
select tag,dt,
sum(like_cnt) over(partition by tag order by dt, like_cnt) as sum_like_cnt_7d,
max(retweet_cnt) over(partition by dt, retweet_cnt ) as max_retweet_cnt_7d
from t1 where dt between date_sub('2021-10-02',INTERVAL 6 DAY) and '2021-10-02'
group by tag,dt
),
t4 as(
select tag,dt,
sum(like_cnt) over(partition by tag order by dt, like_cnt) as sum_like_cnt_7d,
max(retweet_cnt) over(partition by dt, retweet_cnt ) as max_retweet_cnt_7d
from t1 where dt between date_sub('2021-10-03',INTERVAL 6 DAY) and '2021-10-03'
group by tag, dt
),
t5 as(
select tag,max(dt) as dt,max(sum_like_cnt_7d) as sum_like_cnt_7d,max(max_retweet_cnt_7d) as max_retweet_cnt_7d from t2 group by tag
union all
select tag,max(dt) as dt,max(sum_like_cnt_7d) as sum_like_cnt_7d,max(max_retweet_cnt_7d) as max_retweet_cnt_7d from t3 group by tag
union all
select tag,max(dt) as dt,max(sum_like_cnt_7d) as sum_like_cnt_7d,max(max_retweet_cnt_7d) as max_retweet_cnt_7d from t4 group by tag
)select * from t5 order by tag desc ,dt ;