Ir para conteúdo

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora


×

Informação importante

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

Este projeto é mantido e patrocinado pelas empresas:
Hospedado por: