Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Leonardo Fernandes_51639

Sumarização - SUM

Recommended Posts

É o seguinte:

 

Imagine que tenho uma tabela produtos.... e os campos quant e unit.

 

Numa compra , o total comprado é sum(produtos.quant*produtos.unit)

 

Só que quero, para esta compra, exibir todos os produtos da compra, com suas quantidades, preços unitários e o percentual que cada produto

pesa no preço total da compra... então pensei em fazer assim

 

select quant, unit, 100*(quant*unit)/sum(quant*unit) as perc from produtos

 

porém, a query acima só retorna UM REGISTRO.... parece que a função sum restringe a exibição de todos os registros.

 

alguém pode me ajudar a resolver ?????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estamos quase lá... Consegui usar a técnica de criar outro select, dentro do primeiro, para que a sumarização se repita....

 

Mas não estou conseguindo fazer com que o alias criado na query seja reconhecido na própria query....

45 minutos atrás, Motta disse:

 

Estamos quase lá... Consegui usar a técnica de criar outro select, dentro do primeiro, para que a sumarização se repita....

 

Mas não estou conseguindo fazer com que o alias da sumarização, criado na query, seja reconhecido na própria query, para que ele calcule a porcentagem

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

select med_1_1.qtemedida, med_1_1.unit, med_1_1.qtemedida*med_1_1.unit as totpar, (select sum(med_1_1.qtemedida*med_1_1.unit) from med_1_1) as soma, 100*totpar/soma as perc from med_1_1 order by perc

 

ao tentar calcular perc, o mysql não reconhece os aliases totpar nem soma para poder calcular 100*totpar/soma.

 

Já tentei chamar totpar de med_1_1.totpar e soma de med_1_1.soma.... mas não funcionou mesmo assim...

 

Diz que totpar e soma são colunas desconhecidas....

Compartilhar este post


Link para o post
Compartilhar em outros sites
select x.*,
       100*totpar/soma as perc
from (select   med_1_1.qtemedida,
               med_1_1.unit,
               med_1_1.qtemedida*med_1_1.unit as totpar,
               (select sum(med_1_1.qtemedida*med_1_1.unit)
                from med_1_1) as soma
      from med_1_1 order by perc) x

Creio que resolva

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.