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

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

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

select 
tag,
sum(if_retweet),
round(sum(if_retweet) / count(1),3)
from tb_user_video_log log
left join tb_video_info info 
on log.video_id = info.video_id
where datediff(
    (select max(start_time) from tb_user_video_log), start_time
) <= 29
group by 1
order by 2 desc

  1. SELECT 子句 tag: 选择视频的标签。 sum(if_retweet): 计算每个标签的转发总次数 (if_retweet 的总和)。 round(sum(if_retweet) / count(1), 3): 计算转发占比,并四舍五入到小数点后三位。
  2. sum(if_retweet) / count(1) 的解释 sum(if_retweet): 计算每个标签下被转发的次数总和。假设 if_retweet 是一个二进制字段,1 表示该视频被转发,0 表示未转发。 count(1): 计算每个标签的总记录数,即这个标签下所有视频的总数。这里的 count(1) 等价于 count(*),表示计数当前分组中的所有行。 sum(if_retweet) / count(1): 表示每个标签下被转发的次数占该标签总视频数的比例。它计算了在该标签下的视频被转发的比率,或称为转发率。
  3. FROM tb_user_video_log log 从 tb_user_video_log 表中选择数据,这个表可能存储用户的视频观看记录。
  4. LEFT JOIN tb_video_info info ON log.video_id = info.video_id 对 tb_user_video_log 和 tb_video_info 表进行左连接,连接条件是 video_id 相同。tb_video_info 可能存储了视频的元数据,如标签信息等。
  5. WHERE 子句 datediff((select max(start_time) from tb_user_video_log), start_time) <= 29: datediff 函数计算两个日期之间的天数差。 这个条件筛选出最近一个月内的记录,具体来说是从 tb_user_video_log 表中找出距离最新记录的时间在 29 天内(不含第30天)的所有数据。
  6. GROUP BY 1 对查询结果按照第一个选择的字段(即 tag)进行分组,计算每个标签的转发总次数和转发率。
  7. ORDER BY 2 DESC 最后,对分组后的结果按第二列 (sum(if_retweet),即转发总次数) 进行降序排列,确保转发次数最多的标签排在最前面。 总结 这段 SQL 代码的作用是:在最近一个月内,根据视频标签计算转发次数的总和,以及每个标签的转发率,并按转发次数从高到低排序。sum(if_retweet) / count(1) 表示在每个标签下的视频中,被转发的比例,即转发率。
#SQL学习打卡##sql##sql练习日常#
全部评论

相关推荐

野猪不是猪🐗:我assume that你must技术aspect是solid的,temperament也挺good的,however面试不太serious,generally会feel style上不够sharp
点赞 评论 收藏
分享
叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务