【问题】
统计在有用户互动的最近一个月(按包含当天在内的近30天算,比如10月31日的近30天为10.2~10.31之间的数据)中,每类视频的转发量和转发率(保留3位小数)。
【数据】
用户-视频互动表 tb_user_video_log
(uid-用户ID, video_id-视频ID, start_time-开始观看时间, end_time-结束观看时间, if_follow-是否关注, if_like-是否点赞, if_retweet-是否转发, comment_id-评论ID)
短视频信息表 tb_video_info
(video_id-视频ID, author-创作者ID, tag-类别标签, duration-视频时长(秒), release_time-发布时间)
输出示例数据:tag,retweet_cut,retweet_rate文章来源:https://www.toymoban.com/news/detail-520336.html
【要点】
- 获得两个时间戳之间相差多少天:
datediff(x1,x2)
- 由题目中的例子看出,相差30天两个时间相减计算结果实际上是29天,很容易犯错
- 题目描述的比较模糊,“有用户互动的最近一个月” 是每类视频分别计算,还是所有的类型放一起看?面试中如果碰到这类题可以跟面试官沟通来明确需求。
【解答】
select b.tag,
sum(if_retweet) as retweet_cut,
round(sum(if_retweet)/count(*),3) as retweet_rate
from tb_user_video_log a left join tb_video_info b on a.video_id=b.video_id
where datediff(a.start_time,(
select start_time
from tb_user_video_log
order by id desc
limit 1))<=29
group by b.tag
order by retweet_rate desc
【知识扩充】
sql 计算时间差 datediff & timestampdiff文章来源地址https://www.toymoban.com/news/detail-520336.html
到了这里,关于【SQL】每类视频近一个月的转发量/率的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!