Расчет с начала года - PullRequest
0 голосов
/ 21 февраля 2019

Я должен сделать расчет с начала года, отличный от нормы.Обычно я бы использовал AVG вместо calc в SQL, так как это самый простой способ сделать это.

AVG(Value) over (Partition by what ever columns Order by Period and what ever columns ROWS BETWEEN unbound preceding and CURRENT ROW)

Они рассчитывают следующее:

  • июль с начала года - июльское значение * нет дней в месяце / нет дней с начала года

  • Авг с начала года - (июльское значение * без дней в месяце + авг. Значение * без дней в месяце) / нет дней с начала года

  • Сен с начала года - (июльское значение * нетчисло дней в месяце + значение августа * количество дней в месяце + значение сентября * количество дней в месяце) / количество дней ytd

Таблица будет выглядеть примерно так:

Month   Value
Jul      100
Aug      200
Sep      300

Результат должен быть

Month   YTD Value 
Jul      100
Aug      150
Sep      198.91

Это простой способ сделать это в SQL

1 Ответ

0 голосов
/ 21 февраля 2019

Вам нужна таблица с количеством дней в месяце.В вашем случае:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...