Média ponderada em T-SQL (como o SUMPRODUCT do Excel)
Eu estou procurando uma maneira de derivar uma média ponderada de duas linhas de dados com o mesmo número de colunas, onde a média é a seguinte (emprestando notação do Excel):
(A1*B1)+(A2*B2)+...+(An*Bn)/SUM(A1:An)
A primeira parte reflete a mesma funcionalidade da função SUMPRODUCT () do Excel.
Meu problema é que preciso especificar dinamicamente a linha que recebe a média com pesos, e de que linha os pesos vêm e um período.
EDIT: Isso é mais fácil do que eu pensava, porque o Excel estava me fazendo pensar que eu precisava de algum tipo de pivô. Minha solução até agora é assim:
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