题解 | #国庆期间每类视频点赞量和转发量#
国庆期间每类视频点赞量和转发量
https://www.nowcoder.com/practice/f90ce4ee521f400db741486209914a11
问题切分
筛选条件:2021年国庆头3天
要求的是:每类视频每天的近一周总点赞量和一周内最大单天转发量
隐藏条件:结果按视频类别降序、日期升序排序
重点问题
怎么计算每类视频每天的近一周总点赞量和一周内最大单天转发量?
看到近一周想到滑动窗口函数
先聚合每天的视频点赞总数和转发总数,再开窗进行计算,最后筛选出国庆的前三天
整合代码
select *
from
(select
tag,
dt,
sum(like_cnt) over(partition by tag order by dt rows between 6 preceding and current row) sum_like_cnt_7d,
max(retweet_cnt) over(partition by tag order by dt rows between 6 preceding and current row) max_retweet_cnt_7d
from
(select
tag,
date(start_time) dt,
sum(if_like) like_cnt,
sum(if_retweet) retweet_cnt
from
tb_user_video_log tu left join tb_video_info tv
on tu.video_id = tv.video_id
group by 1,2) a) b
where
dt between '2021-10-01' and '2021-10-03'
order by 1 desc,2
注意事项
窗口函数内千万不要where筛选,不然会先筛选再开窗,答案就错了
小天才公司福利 1320人发布
