Я пытаюсь найти среднее значение суммы столбца. С ниже кодом:SQL Server: avg sum
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()
функции, или мне нужно подсчитать строки и разделить сумму на количество строк?
ПОСЛЕ EDIT:
Вот мой код, благодаря некоторым ответам на мой вопрос:
SELECT SUM(totalSpend)/SUM(numVisits) AS totalSpend, HHtype
FROM dbo.ANTHEM_IDS_JR
GROUP BY HHtype
Но я получаю сообщение об ошибке:
Divide by zero error encountered.
Любая идея о том, как почини это? Должен ли я создать функцию для удаления строк с 0 в numVisits
?
ПОСЛЕ ДРУГОЕ EDIT:
Вот мой код в настоящее время. Это функция:
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