Promedio ponderado en T-SQL (como el SUMPRODUCT de Excel)
Estoy buscando una manera de derivar un promedio ponderado de dos filas de datos con el mismo número de columnas, donde el promedio es el siguiente (tomando prestada la notación de Excel):
(A1*B1)+(A2*B2)+...+(An*Bn)/SUM(A1:An)
La primera parte refleja la misma funcionalidad que la función SUMPRODUCT () de Excel.
Mi problema es que necesito especificar dinámicamente qué fila se promedia con los pesos, y de qué fila provienen los pesos, y un rango de fechas.
EDITAR: Esto es más fácil de lo que pensé, porque Excel me estaba haciendo pensar que necesitaba algún tipo de pivote. Mi solución hasta ahora es así:
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