题解 | #国庆期间每类视频点赞量和转发量#
国庆期间每类视频点赞量和转发量
https://www.nowcoder.com/practice/f90ce4ee521f400db741486209914a11
笔记心得:
就是最近几天求和,需要使用到开窗函数,如果涉及跨行需要开窗的row的知识点
rows n perceding:从当前行到前n行(一共n+1行) rang/rows between 边界规则1 and 边界规则2:rang表示按照值的范围进行定义框架,rows表示按照行的范围进行定义框架 rows between 2 perceding and 2 following #当前行往前2行+当前行+当前行往后2行(一共5行) rows between 1 following 3 following #当前行的后1——>后3(共3行) rows between unbounded preceding and current row #从第一行到当前行
答案
select
*
from
(select
c.tag,
c.dt,
-- sum(sum(c.like_cnt))over( partition by c.tag order by c.dt desc rows 6 following) as like_cnt
SUM(c.like_cnt) OVER( PARTITION BY c.tag ORDER BY c.dt rows 6 preceding ),
MAX(c.retweet_cnt) OVER( PARTITION BY c.tag ORDER BY c.dt rows 6 preceding) -- sum(c.retweet_cnt) over( partition by c.tag order by c.dt desc rows 6 following) as retweet_cnt
from
(
select
b.tag,
date_format(a.start_time, '%Y-%m-%d') as dt,
sum(a.if_like) like_cnt,
sum(a.if_retweet) retweet_cnt
from
tb_user_video_log a
left join tb_video_info b on a.video_id = b.video_id
group by
b.tag,
date_format(a.start_time, '%Y-%m-%d')
)c)d
where d.dt>=date_format('2021-10-01','%Y-%m-%d')
and d.dt<=date_format('2021-10-03','%Y-%m-%d')
order by d.tag desc ,d.dt

阿里云工作强度 667人发布