0

我无法使计算列显示平均值。请参见:

    Cast(AVG(COALESCE(mnth1.HandledCalls,0)+COALESCE(mnth2.HandledCalls,0)+COALESCE(mnth3.HandledCalls,0)) as Decimal(8,2))  as Avg_Handled,

如何使这个显示平均 3 列?有时,可能不会填充 mnth2 和 mnth3。我试图将合并的月份除以一个计数,以防任何给定时间为空。我收到一条错误消息,提示选择列表无效。有什么建议么?

4

3 回答 3

1

像这样的东西?

cast(
    sum(
        coalesce(mnth1.HandledCalls, 0) +
        coalesce(mnth2.HandledCalls, 0) +
        coalesce(mnth3.HandledCalls, 0)
    )
as decimal(29, 10)) /
(
    count(mnth1.HandledCalls) +
    count(mnth2.HandledCalls) +
    count(mnth3.HandledCalls)
)
于 2013-08-22T18:25:01.703 回答
0

你可以做类似的事情

Cast(
     AVG((SELECT COALESCE(mnth1.HandledCalls,0) 
          UNION ALL SELECT COALESCE(mnth2.HandledCalls,0) 
          UNION ALL SELECT COALESCE(mnth3.HandledCalls,0) )) 
     AS  Decimal(8,2))  as Avg_Handled
于 2013-08-22T18:39:57.807 回答
0

您是否尝试过以下方法:

SELECT CAST(AVG(ZEROIFNULL(mnth1.HandledCalls) 
     + ZEROIFNULL(mnth2.HandledCalls) 
     + ZEROIFNULL(mnth3.HandledCalls) as Decimal(8,2))  as Avg_Handled
FROM ....

默认情况下,Teradata 中的聚合函数会忽略 NULL 值。

于 2013-08-22T19:51:32.347 回答