题解 | #国庆期间每类视频点赞量和转发量#

国庆期间每类视频点赞量和转发量

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 
  

全部评论

相关推荐

点赞 评论 收藏
分享
10-17 17:54
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务