年初至今计算

时间:2019-02-21 12:16:08

标签: mysql sql

我必须执行与常规不同的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中执行此操作的简便方法

1 个答案:

答案 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