Średnia ważona w T-SQL (np. Excel SUMPRODUCT)
Szukam sposobu na uzyskanie średniej ważonej z dwóch wierszy danych o tej samej liczbie kolumn, gdzie średnia jest następująca (zapożyczanie notacji programu Excel):
(A1*B1)+(A2*B2)+...+(An*Bn)/SUM(A1:An)
Pierwsza część odzwierciedla tę samą funkcjonalność co funkcja SUMPRODUCT () programu Excel.
Mój haczyk polega na tym, że muszę dynamicznie określić, który wiersz zostanie uśredniony za pomocą wag, oraz w którym wierszu pochodzą wagi i zakres dat.
EDYCJA: To jest łatwiejsze niż myślałem, ponieważ Excel zmusił mnie do myślenia, że potrzebuję jakiegoś rodzaju osi obrotu. Do tej pory moim rozwiązaniem jest:
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