牛客网SQL159

每个创作者每月的涨粉率及截止当前的总粉丝量_牛客题霸_牛客网

#if_follow是本题的主要指标
select author,年月,涨粉率,总粉丝量
from
(
    select author,年月,涨粉率,
    sum(本月和)over(partition by author order by author,年月) 总粉丝量
    from
    (
        select b.author,a.年月,format(sum(是否关注)/count(*),3) 涨粉率,
        sum(是否关注) 本月和
        from
           (
                select uid,video_id,convert(start_time,char(7)) 年月,
                case
                when if_follow=2 then -1
                else if_follow
                end 是否关注
                from tb_user_video_log
                where convert(start_time,char(7)) like '2021-%'
           ) a
        join
           (
                select video_id,author
                from tb_video_info
           ) b
        on a.video_id=b.video_id
        group by b.author,a.年月
        order by a.年月
    ) c
) d
order by author,总粉丝量

既涉及到分析函数(分组partition by,排序order by)
又涉及到排序的
最好把分析函数用完之后,得到要的东西之后,再单独order by一下
不然分析函数内部要排序,有自己的排序标准,你外面又要排序,多个排序标准,容易乱,一排序排错,就容易导致分析函数得到的结果也是错的。

你可能感兴趣的:(SQL-Oracle,sql)