У меня есть таблица транзакций. Мне нужно обновить таблицу предварительно агрегированным значением из другой таблицы, а затем свернуть их до различных уровней детализации.
Однако окончательный вывод неверен. Надеясь, что кто-то здесь может помочь мне понять, как это сделать.
Table A:
TransID BankName Location Region SaleType MonthlyPayment Weight
1 BOA Boston East F 3000 3
2 Mellon Pittsburgh East C 1000 3
3 BOA Boston East C 2000 2
4 BOA Boston East 1000 2
Table B
BanKname Location Region Sales
BOA Boston East 500
Mellon Pittsburgh East 1000
Desired Output structure
BankName Location Region SaleType AvgSales AvgMonthlyPayment
Проблема заключается в том, что при обновлении и выполнении средневзвешенного значения каждая из бостонских транзакций получает 500 продаж. После добавления общий объем продаж должен составить 1500, но теперь он равен 2500.
Если я обновлю Таблицу A значением Sales из Таблицы B, продажи будут повторяться для каждого типа продажи - таким образом, это сбрасывает окончательные средние продажи.
update is this: (Added new column sales in A)
update a
set a.sales = b.sales
from tableA a join tableB b on a.bankname=b.bankname and
a.location=b.location and a.region = b.region
weighted average from A is calculated like this:
select bankname,location,region,saletype,
sum(case when sales is not null then sales*weight else 0
end)/sum(weight) as avgsales
, sum(case when monthlypayment is not null then monthlypayment*weight
else 0 end)/sum(weight) as avgmonthlyp
from tableA
group by bankname,location,region,saletype
Для каждого типа продажи продажи обновляются с учетом стоимости, увеличивая итоговое значение на эту сумму.
Как я могу обновить продажи, чтобы BOA получал только 500, а Меллон только 1000, а общее количество продаж составляло 1500?