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

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

http://www.nowcoder.com/practice/f90ce4ee521f400db741486209914a11

【问题解读】国庆前三天每类视频近一周内的点赞量以及一周内最大当天转发数量

  1. 国庆前三天每类视频表明分组条件为天和视频类别
  2. 近一周内表明统计周期

【难点分析】如何统计当天过往一周内的数据,我们可以轻松得到每天每类视频的数据,但如何同时将过往一周内的数据统计出来是一个难点

【解决办法】我们可以利用自连接,将每天每类视频的数据自连接,然后添加一个筛选条件,这需要我们创建两个临时表,代码逻辑如下所示:

SELECT 
   A.tag,
   A.day,
   SUM(B.like_day) AS sum_like_cnt_7d,
   MAX(B.retweet_day) AS max_retweet_day
 FROM  
(SELECT 
    tag,
    DATE_FORMAT(start_time,'%Y-%m-%d') DAY,
    SUM(if_like) AS like_day,
    SUM(if_retweet) AS retweet_day
FROM tb_user_video_log t1
JOIN tb_video_info t2
ON t1.video_id = t2.video_id
WHERE DATEDIFF(DATE_FORMAT(start_time,'%y-%m-%d'),'2021-10-01') BETWEEN 0 AND 2
GROUP BY tag,DATE_FORMAT(start_time,'%Y-%m-%d')
) A
JOIN 
(SELECT 
    tag,
    DATE_FORMAT(start_time,'%Y-%m-%d') DAY,
    SUM(if_like) AS like_day,
    SUM(if_retweet) AS retweet_day
FROM tb_user_video_log t1
JOIN tb_video_info t2
ON t1.video_id = t2.video_id
GROUP BY tag,DATE_FORMAT(start_time,'%Y-%m-%d')
) B
ON A.tag = B.tag
WHERE DATEDIFF(A.day,B.day) BETWEEN 0 AND 6
GROUP BY A.day,A.tag

全部评论
牛哇
点赞 回复 分享
发布于 2022-02-06 19:15

相关推荐

12-03 03:32
安徽大学 Java
点赞 评论 收藏
分享
11-17 23:00
南昌大学 Java
我要娶个什么名:10元一天 0元提成😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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