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

select tag, sum(if_retweet) as retweet_cnt,
round(sum(if_retweet) / count(1), 3) as retweet_rate
from tb_user_video_log
join tb_video_info using(video_id)
where date(start_time) > (
    select date_sub(max(date(start_time)), interval 30 day)
    from tb_user_video_log
)
group by tag
order by retweet_rate desc;
  1. 子查询:这个子查询计算了tb_user_video_log表中start_time列的最大日期,然后使用DATE_SUB函数减去30天,得到一个日期阈值。这个阈值用于在外层查询中筛选出最近30天的数据。

  2. 外层查询:外层查询首先将tb_user_video_log表和tb_video_info表通过video_id列进行连接。然后,它使用WHERE子句和子查询的结果来筛选出start_time大于最近30天的数据。

  3. 分组和聚合:外层查询使用GROUP BY tag来按标签分组数据。对于每个标签,它使用SUM(if_retweet)来计算转发次数(retweet_cnt),其中if_retweet是一个布尔类型的列,表示视频是否被转发。

  4. 计算转发率:查询使用ROUND函数来将retweet_cnt除以每个标签的总视频数(COUNT(1)),然后将结果四舍五入到小数点后三位,得到转发率(retweet_rate)。

  5. 排序:最后,查询使用ORDER BY retweet_rate DESC来按转发率降序排序结果。

整个查询的逻辑是先计算出每个标签在最近30天内的总转发次数,然后计算出每个标签的转发率,并按照这个率进行排序。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值