Sql 对合并值使用滚动平均值
我无法使计算列显示平均值。请参阅:Sql 对合并值使用滚动平均值,sql,average,teradata,coalesce,rolling-computation,Sql,Average,Teradata,Coalesce,Rolling Computation,我无法使计算列显示平均值。请参阅: Cast(AVG(COALESCE(mnth1.HandledCalls,0)+COALESCE(mnth2.HandledCalls,0)+COALESCE(mnth3.HandledCalls,0)) as Decimal(8,2)) as Avg_Handled, 我如何使这个节目平均3列?有时,mnth2和mnth3可能无法填充。我试图用计数除以合并月份,以防任何月份在任何给定时间都为空。我收到一个错误,说选择列表无效。有什么建议吗?像这样
Cast(AVG(COALESCE(mnth1.HandledCalls,0)+COALESCE(mnth2.HandledCalls,0)+COALESCE(mnth3.HandledCalls,0)) as Decimal(8,2)) as Avg_Handled,
我如何使这个节目平均3列?有时,mnth2和mnth3可能无法填充。我试图用计数除以合并月份,以防任何月份在任何给定时间都为空。我收到一个错误,说选择列表无效。有什么建议吗?像这样的建议
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)
)
你可以这样做
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
您是否尝试过以下方法:
SELECT CAST(AVG(ZEROIFNULL(mnth1.HandledCalls)
+ ZEROIFNULL(mnth2.HandledCalls)
+ ZEROIFNULL(mnth3.HandledCalls) as Decimal(8,2)) as Avg_Handled
FROM ....
默认情况下,Teradata中的聚合函数会忽略空值。您可以将表结构添加到问题中吗?当计算一个平均值时,其中一列为空值,您希望将空值视为零,还是只希望其他两列的平均值?表结构仅选择mnth1、mnth2,mnth 3和该值是每个可用值的平均值。我使用的是teradata 12。当null时,我想将其视为不存在(也就是其他两列的平均值),它看起来很简单…我回到办公桌时会进行测试。谢谢你的回复。事实上我不知道它在Teradata是否有效,但你可以试试