题解 | #每个创作者每月的涨粉率及截止当前的总粉丝量#
每个创作者每月的涨粉率及截止当前的总粉丝量
https://www.nowcoder.com/practice/d337c95650f640cca29c85201aecff84
with
t1 as (
select
a.video_id vid,
mth,
fans_flag,
author
from
(
select
video_id,
DATE_FORMAT (end_time, "%Y-%m") mth,
case
when if_follow = 1 then 1
when if_follow = 0 then 0
when if_follow = 2 then -1
end as fans_flag
from
tb_user_video_log
) as a
left join (
select
video_id,
author
from
tb_video_info
) as b on a.video_id = b.video_id
)
# 计算总播放率:count(vid) -> 每一条对应一次播放
# 涨粉:sum(fans_flag) -> 正负抵消
select
author, mth, round(sum(fans_flag) / count(vid),3) fans_growth_rate, (
select sum(fans_flag)
# 使用关联子查询时,将这里的表记得重命名
from t1 as help
# 关联子查询
where help.author = t1.author and help.mth <= t1.mth
) total_fans
from
t1
# 日期字符串可以直接比较
where mth >= '2021-01'
group by author, mth
order by author, total_fans

