我必须执行与常规不同的YTD计算。通常,我会在SQL中对钙计算使用AVG,因为这是最简单的方法。
AVG(Value) over (Partition by what ever columns Order by Period and what ever columns ROWS BETWEEN unbound preceding and CURRENT ROW)
他们计算如下:
7月至今的年初至今-7月的值*月初无天数/年初至今无天数
年初至今八月-(七月值*每月无天数+八月值*每月无天数)/年初至今天数
年初至今-(7月值*每月无天数+ 8月值*每月无天数+ Sep值*每月无天数)/年初至今天数
该表将如下所示:
Month Value
Jul 100
Aug 200
Sep 300
结果应该是
Month YTD Value
Jul 100
Aug 150
Sep 198.91
这是他们在SQL中执行此操作的简便方法
答案 0 :(得分:0)
您需要一个表,其中包含一个月中的天数。就您而言:
select t.*,
(sum(t.value * m.days) over (order by period) /
sum(m.days) over (order by period)
) as average
from t left join
(select 'Jul' as mon, 31 as days union all
select 'Aug' as mon, 31 as days union all
select 'Sep' as mon, 30 as days
) m
on t.mon = m.mon