Следуя тому, что вы указали в качестве своей цели, вы можете пойти так:
select profile_id, area, money,
sum(total_money)/
(select sum(total_money) from db_A as dba2 where dba2.area = dba1.area and dba2.profile_id != dba1.profile_id) as area_proportion
from db_A as dba1
group by profile_id
Хотя, я предполагаю, что вы хотите отбросить часть and dba2.profile_id != dba1.profile_id
, как вы, вероятно, хотите, чтобы часть, которую имеет пользователь один из всехденьги в области.
более эффективным подходом было бы создание представления с одним подвыбором и объединение с ним следующим образом:
select profile_id, area, money,
sum(total_money) / area_total_money as area_proportion
from db_A as dba1 join (select area, sum(total_money) as area_total_money from db_A as dba2 group by area ) as area_money on dba1.area = area_money.area
group by profile_id