题解 | #每类视频近一个月的转发量/率#

每类视频近一个月的转发量/率

https://www.nowcoder.com/practice/a78cf92c11e0421abf93762d25c3bfad

前置函数

SQL 提供了 DATE_SUB() 和 DATE_ADD() 两个函数,分别用于从日期或时间戳中减去和加上时间间隔。

  • DATE_SUB():用于从日期或时间戳中减去时间间隔。
  • DATE_ADD():用于向日期或时间戳中加上时间间隔。

DATE_SUB()用法DATE_SUB(date, INTERVAL expr unit):此函数从 date 参数中减去一个由 expr 和 unit 定义的时间间隔。date:这是要从中减去时间间隔的日期或时间戳。INTERVAL expr unit:定义要减去的时间间隔。expr 是一个整数表达式,代表时间间隔的数量;unit 是时间单位,可以是 YEAR, MONTH, DAY, HOUR, MINUTE, SECOND 等。

问题分解

  • 关联两表tb_user_video_log uv join tb_video_id vi using (video_id)
  • 转发量sum(uv.if_retweet)
  • 转发率保留三位小数round(sum(uv.if_retweet)/count(1), 3)
  • 筛选最近30天的记录:找到今天的日期即范围终点:Max(DATE(start_time))往过去推移30天即范围起始点: date_sub(Max(DATE(start_time)),Interval 30 Day)筛选最近30天的记录:where date(start_time)>(select date_sub(Max(DATE(start_time)),Interval 30 Day) from tb_uservideo_log) //以今天为截至,往前30天的范围都选出来
  • 按视频类别分 group by tag
  • 按转发倒序排序 order by retweet_rate desc
select tag, sum(uv.if_retweet) as retweet_cut, round(sum(uv.if_retweet)/count(1), 3) as retweet_rate
from tb_user_video_log uv join tb_video_info USING (video_id)
where date(start_time) > (select date_sub(max(start_time), interval 30 day) from tb_user_video_log)
group by tag
order by retweet_rate desc;

全部评论

相关推荐

关于我大学本科四年,想了很多,但还是不知道该怎么动笔 “大学四年,是我从懵懂少年走向职场青年的转折期。这一路跌跌撞撞,有迷茫,有遗憾,也有成长和决心。” 大一刚进来时仍然有高中那股学习劲,经常一个人去图书馆学高等数学,但后面劲头一过便开始在宿舍开启躺平生活(现在想想那段时间真的很爽,无忧无虑)。由于大一担任班干部,所以经常要跟其他班的班干部交流,在此期间认识了隔壁班的一位女生,短发而很可爱,因为很多团建还有比赛都是我们两班一起参加的,而且我和她都是负责人,所以交集很多,后面慢慢地彼此对产生了好感,所以在大一刚开学的2个月后,我们在一起了,彼此之前都是初恋。但当时我真的是太太太直男了,对感情的想...
真烦好烦真烦:骗哥们可以,别把你自己也骗到了就行。哥们被你骗了真无所谓的,打个哈哈就过了。但希望你打完这段话后擦一下眼角,别让眼泪掉在手机屏幕上了就行。你说的这些话,哥们信一下也是没什么的。还能让你有个心里安慰,但这种话说出来骗骗兄弟就差不多得了,哥们信你一下也不会少块肉,但是你别搞得自己也当真了就行。哥们被你骗一下是真无所谓的,兄弟笑笑也就过去了。真不是哥们想要破你防,你擦擦眼泪好好想想,除了兄弟谁还会信你这些话?
点赞 评论 收藏
分享
04-06 11:24
已编辑
太原学院 C++
真烦好烦真烦:感觉不太对劲,这种主动加微信的一般都是坑,要小心辨别
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务