Estou tentando calcular o peso usando update. No caso específico, preciso aplicar o agrupamento, pois a carga precisa ser distribuída pelo id do cliente. Mas o agrupamento não está funcionando corretamente aqui. É obrigatório usar update
Resultados
Resultado esperado: o resultado esperado é ter alocado por peso com base no ID do cliente e nas participações 0,14/0,14/1/0,71
CREATE TABLE VALUE_TBL
( CLIEND_ID NUMBER(10),
VALUE NUMBER,
WEIGHT NUMBER,
HOLDINGS VARCHAR(50)
);
insert into value_tbl1(cliend_id,value,WEIGHT,HOLDINGS) values(1,10,33.33,'GOOGLE');
insert into value_tbl1(cliend_id,value,WEIGHT,HOLDINGS) values(1,10,33.33,'AAPL');
insert into value_tbl1(cliend_id,value,WEIGHT,HOLDINGS) values(2,30,100,'ABB');
insert into value_tbl1(cliend_id,value,WEIGHT,HOLDINGS) values(1,50,33.33,'TESLA');
Tentei a seguinte atualização, mas sem sucesso
update value_tbl y
set weight = value /
(select sum(value)
from value_tbl x
group by x.cliend_id)
Sua subconsulta retornará uma linha para cada ID, não apenas o total para o ID que você está atualizando. Como uma atualização correlacionada, isso se pareceria com:
Que não é o resultado que você mostrou. Para obter essas porcentagens, você usaria a contagem e dividiria em 100, não
value
:violino
Você pode usar as funções round, floor/ceil ou trunc para limitar os resultados a duas casas decimais ou alterar a definição da coluna para armazenar apenas duas casas decimais.