Я пытаюсь написать запрос, который возвращает общий процент в процентах, используя все строки процентов.
У меня проблемы с вычислением общего среднего процента с использованием функции AVG, поскольку в переданном поле используется другая функция SUM, которая рассчитывает процент в строке.
Пример:
SELECT
-- Row Percent Value
CONVERT(DECIMAL(5,4), 1.0 * SUM([col1]+[col2]+[col3]+[col4]+[col5]) / SUM([total])) AS 'Percent Row',
-- total rows average percent -- This part does not work
AVG(CONVERT(DECIMAL(5,4), 1.0 * SUM(CASE WHEN [col0] = 'Y' THEN [total] ELSE 0 END) / SUM([total])))
Я получаю сообщение об ошибке:
Cannot perform an aggregate function on an expression containing an aggregate or a subquery.
Буду признателен за любую помощь, как обойти это, любая оценка очень ценится,
ОБНОВЛЕНИЕ
Это мой текущий запрос (без среднего)
SELECT
'Totals',
CAST(CAST(SUM(CASE WHEN Gender = 'F' THEN Total ELSE 0 END) AS DECIMAL) / CAST(SUM(Total) AS DECIMAL) AS FLOAT) AS 'OA F'
FROM RecordCount rc WITH(NOLOCK)
INNER JOIN Record r WITH(NOLOCK)
ON r.RecordId = rc.RecordId
WHERE
(rc.RecordId IN ('00001','00002'));
Среднее должно быть включено в другой столбец сразу после«OA F», это запрос, который получает среднее значение, и я не уверен, как правильно ввести существующий запрос, главным образом потому, что он использует сначала функцию SUM, а затем AVG:
SELECT AVG(o.[Avg%])
FROM
(
SELECT CAST(SUM(i.bnh + i.aa + i.[pi] + i.h + i.tmr)) AS DECIMAL)/ SUM(i.total) as [Avg%]
FROM rc i
) AS o
Любая помощь очень ценит это.