【发布时间】:2014-06-10 19:16:51
【问题描述】:
我试图找到一列总和的平均值。使用以下代码:
select avg(sum(totalSpend)) as HHtypetotalSpend,
HHtype
from dbo.ANTHEM_IDS_JR
GROUP BY HHtype, totalSpend;
我到达那里错误:
无法对包含 聚合或子查询。
有没有办法使用内置的avg() 函数获取列总和的平均值,还是我需要计算行数并将总和除以行数?
编辑后:
感谢对我的问题的一些回答,这是我的代码:
SELECT SUM(totalSpend)/SUM(numVisits) AS totalSpend, HHtype
FROM dbo.ANTHEM_IDS_JR
GROUP BY HHtype
但我收到此错误消息:
遇到除以零错误。
关于如何解决这个问题的任何想法?我应该创建一个函数来删除numVisits 中带有0 的行吗?
另一次编辑后:
这是我的代码。它是一个函数:
DROP FUNCTION getHHtypeTotalSpendAvg
GO
CREATE FUNCTION getHHtypeTotalSpendAvg()
RETURNS float
BEGIN
DECLARE @HHtypetotalSpendAvg float
DECLARE @ANTHEM_IDS_JR_TABLE table (numVisits int, totalSpend float)
INSERT into @ANTHEM_IDS_JR_TABLE select numVisits as numVisits, totalSpend as totalSpend from dbo.ANTHEM_IDS_JR--(dbo.ANTHEM_IDS_JR.numVisits, dbo.ANTHEM_IDS_JR.totalSpend)
-- SET @ANTHEM_IDS_JR_TABLE=dbo.ANTHEM_IDS_JR.numVisits, dbo.ANTHEM_IDS_JR.totalSpend
-- select @HHtypetotalSpendAvg = sum(totalSpend)/sum(numVisits), HHtype from dbo.ANTHEM_IDS_JR GROUP BY HHtype;
DELETE numVisits from @ANTHEM_IDS_JR_TABLE WHERE numVisits=0
DELETE totalSpend from @ANTHEM_IDS_JR_TABLE WHERE totalSpend=NULL
select @HHtypetotalSpendAvg = sum(totalSpend)/sum(numVisits) from dbo.ANTHEM_IDS_JR GROUP BY HHtype;
RETURN @HHtypetotalSpendAvg
END;
GO
EXEC getHHtypeTotalSpendAvg`
但我收到错误消息:
无效的对象名称'numVisits'
任何帮助将不胜感激。
【问题讨论】:
-
总和的平均值就是总和......也许我误解了你的问题......
-
@Steve P :他想在组中求和,然后将总和除以组中的行数。
标签: sql sql-server sum average