열 합계의 평균을 찾으려고합니다. 아래의 코드와 함께 :SQL Server : 평균 합계
select avg(sum(totalSpend)) as HHtypetotalSpend,
HHtype
from dbo.ANTHEM_IDS_JR
GROUP BY HHtype, totalSpend;
내가 거기 오류 얻을 :
Cannot perform an aggregate function on an expression containing an aggregate or a subquery.
avg()
기능에 내장 된 컬럼의 합계의 평균을 얻을 수있는 방법이 있나요 또는 내가해야합니까 행을 세고 합계를 행의 수로 나눕니까?
AFTER 편집 :
여기에 내 질문에 어떤 답변을 내 코드 덕분이다 :
SELECT SUM(totalSpend)/SUM(numVisits) AS totalSpend, HHtype
FROM dbo.ANTHEM_IDS_JR
GROUP BY HHtype
하지만이 오류 메시지가 얻을 :
Divide by zero error encountered.
하는 방법에 대한 아이디어를 이것을 고쳐라? numVisits
에서 0으로 행을 제거하는 함수를 작성해야합니까? ANOTHER 편집 한 후
:
것은 지금 여기 내 코드입니다. 그것은 함수 :
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`
하지만 난 오류 메시지가 얻을 : 어떤 도움을 주시면 감사하겠습니다
Invalid object name 'numVisits'
합니다.
합계의 평균은 합계가 될 것입니다 ... 아마도 귀하의 질문을 오해하고 있습니다 ... –
@Steve P : 그는 그룹으로 합계하고 그 다음에 합계를 나누기를 원합니다. 그룹의 행 수만큼. – potashin