将一个结果与之前的使用日期进行比较时获得增加或减少的百分比

get % of increase or decrease when comparing one result to previous using dates

这是我的查询:

select 
    country,
    channel,
    month,
    sum(revenue)
from a 
group by 1,2,3

那么,是否可以获得当月收入与上月收入之间的百分比差异?

提前致谢

这是一种方法:

select * 
    ,((revenue/ LAG(revenue,1,0) over (country,channel order by month)) -1)* 100.0 perc
from (
select 
    country,
    channel,
    month,
    sum(revenue) revenue
from a 
group by 1,2,3
) t

您可以将 lag() 与聚合一起使用:

select country, channel, month,
       sum(revenue) as revenue,
       (-1 + sum(revenue) / lag(sum(revenue)) over (partition by country, channel order by month)
       ) as change_ratio
from a
group by 1, 2, 3