1.每类视频每天近一周内的最大单天转发量

select t1.tag,t1.d,
max(t1.if_retweet_sum)over(partition by t1.tag order by t1.d rows 6 preceding)
from (select tag,date(start_time) d,sum(if_retweet) if_retweet_sum
      from tb_user_video_log tvl,tb_video_info tvi
      where tvl.video_id=tvi.video_id
      group by tag,d) as t1

2.每类视频每天的近一周总点赞量

select t1.tag,t1.d,
sum(t1.if_like_sum)over(partition by t1.tag order by t1.d rows 6 preceding)
from (select tag,date(start_time) d,sum(if_like) if_like_sum
      from tb_user_video_log tvl,tb_video_info tvi
      where tvl.video_id=tvi.video_id
      group by tag,d) as t1

注意:这里求最大单天转发量和总点赞量时注意要先根据tag和start_time分组求和,因为用户-视频互动表里面存在时间相同的记录

将上述查询到的两个表可以进行连接,但是这里我采用另一种合并思路,可以发现最大单天转发量和总点赞量的计算都可以经过一个字段基本相同的表,所以将这两个来源表的字段取一个并集得到最终代码的t1表,将总点赞量和最大单天转发量展现在一张表中,最终得到每类视频每天的近一周总点赞量和一周内最大单天转发量

3.最后筛选出来国庆头三天的记录即可

select t2.*
from (select t1.tag,t1.d
      ,sum(t1.if_like_sum)over(partition by t1.tag order by t1.d rows 6 preceding)
      ,max(t1.if_retweet_sum)over(partition by t1.tag order by t1.d rows 6 preceding)
      from (select tag,date(start_time) d
            ,sum(if_like) if_like_sum
            ,sum(if_retweet) if_retweet_sum
            from tb_user_video_log tvl,tb_video_info tvi
            where tvl.video_id=tvi.video_id
            group by tag,d) as t1
     ) as t2
where t2.d between '2021-10-01' and '2021-10-03'
order by t2.tag desc,t2.d

如果可以继续优化,写在评论区,我会采纳并更新