Средневзвешенное значение в T-SQL (например, SUMPRODUCT в Excel)
Я ищу способ получения средневзвешенного значения из двух строк данных с одинаковым количеством столбцов, где среднее значение выглядит следующим образом (заимствуя примечание Excel):
(A1*B1)+(A2*B2)+...+(An*Bn)/SUM(A1:An)
Первая часть отражает ту же функциональность, что и функция SUMPRODUCT () в Excel.
Мой улов заключается в том, что мне нужно динамически указывать, какая строка будет усреднена с весами, а с какой строки получены весовые коэффициенты и диапазон дат.
РЕДАКТИРОВАТЬ: Это проще, чем я думал, потому что Excel заставляет меня думать, что мне нужна какая-то опорная точка. Мое решение до сих пор таково:
select sum(baseSeries.Actual * weightSeries.Actual) / sum(weightSeries.Actual)
from (
select RecordDate , Actual
from CalcProductionRecords
where KPI = 'Weighty'
) baseSeries inner join (
select RecordDate , Actual
from CalcProductionRecords
where KPI = 'Tons Milled'
) weightSeries on baseSeries.RecordDate = weightSeries.RecordDate