В отчете о продажах в OBIEE мне нужно рассчитать среднемесячное значение за пару лет.Проблема в том, что в некоторые месяцы нет зарегистрированных продаж, поэтому я не могу разделить годовой итог на 12, чтобы получить среднее значение.
Мы пытались использовать COUNT (DISTINCT), но он не работает должным образом.Я придумал очень грубую формулу, которая работает, но поскольку она использует CASES, она слишком медленная.Это моя формула:
IFNULL(FILTER("Sales"."Total") USING ("Calendar"."Year" = 2015)), 0) /
((CASE WHEN FILTER("Sales"."Total") USING ("Calendar"."Year" = 2015) AND ("Calendar"."Month" = 1)) IS NULL THEN 0 ELSE 1 END) +
(CASE WHEN FILTER("Sales"."Total") USING ("Calendar"."Year" = 2015) AND ("Calendar"."Month" = 2)) IS NULL THEN 0 ELSE 1 END) +
(CASE WHEN FILTER("Sales"."Total") USING ("Calendar"."Year" = 2015) AND ("Calendar"."Month" = 3)) IS NULL THEN 0 ELSE 1 END) +
...
(CASE WHEN FILTER("Sales"."Total") USING ("Calendar"."Year" = 2015) AND ("Calendar"."Month" = 12)) IS NULL THEN 0 ELSE 1 END)
)
Может кто-нибудь придумать формулу, которая выдаст тот же результат без использования CASES?