计算OBIEE上可能具有NULL值的列的平均值

时间:2019-07-10 15:08:19

标签: sql business-intelligence obiee

在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的情况下想出产生相同输出的公式吗?

0 个答案:

没有答案