Duvida sobre sum, multiplicacao

05/01/2005

0

Olá pessoal, tenho uma duvida pois me falaram que não é possivel fazer em uma consulta sql uma multiplicacao e um sum, tipo:

select i.codprod, p.descricao, sum(i.quantidade) total, (i.qantidade * p.valorunitario) soma
from produtos p, itens_venda i, vendas v
where
(i.codvenda = v.codvenda) and (i.codprod = p.codprod)...

É Mais ou menos isso, se alguem puder me passar um exeplo de como seria esta consulta ficaria grato!

Obs. Uso Delphi 7, Firebird -> IBexpert, Rave


Dberlese

Dberlese

Responder

Posts

05/01/2005

Emerson Nascimento

deveria ser algo assim:

select i.codprod, max(p.descricao), sum(i.quantidade) qtd, (i.qantidade * p.valorunitario) valortotal
from itens_venda i
left join produtos p on (p.codprod=i.codprod)
group by i.codprod

assim seria feita a soma de todas as suas vendas, e seria mostrado o valor total de cada produto. pode ser feito algo do tipo: preciso saber quais foram os produtos vendidos em março de 2003:

select i.codprod, max(p.descricao), sum(i.quantidade) qtd, (i.qantidade * p.valorunitario) valortotal
from vendas v
left join itens_venda i on (i.codvenda = v.codvenda)
left join produtos p on (p.codprod=i.codprod)
where extract(month from v.datadavenda)=03 and extract(year from v.datadavenda)=2003
group by i.codprod

e por aí vai...

p.s: por experiência própria, sugiro que você grave o valor unitário do produto na tabela de itens da venda. assim, em qualquer tempo, você terá o valor real da época da venda.


Responder

05/01/2005

Emerson Nascimento

corrigindo:


deveria ser algo assim:

select i.codprod, max(p.descricao), sum(i.quantidade) qtd, (sum(i.quantidade) * max(p.valorunitario)) valortotal
from itens_venda i
left join produtos p on (p.codprod=i.codprod)
group by i.codprod

assim seria feita a soma de todas as suas vendas, e seria mostrado o valor total de cada produto. pode ser feito algo do tipo: preciso saber quais foram os produtos vendidos em março de 2003:

select i.codprod, max(p.descricao), sum(i.quantidade) qtd, (sum(i.quantidade) * max(p.valorunitario)) valortotal
from vendas v
left join itens_venda i on (i.codvenda = v.codvenda)
left join produtos p on (p.codprod=i.codprod)
where extract(month from v.datadavenda)=03 and extract(year from v.datadavenda)=2003
group by i.codprod

e por aí vai...

p.s: por experiência própria, sugiro que você grave o valor unitário do produto na tabela de itens da venda. assim, em qualquer tempo, você terá o valor real da época da venda.


Responder

05/01/2005

Dberlese

corrigindo: deveria ser algo assim: select i.codprod, max(p.descricao), sum(i.quantidade) qtd, (sum(i.quantidade) * max(p.valorunitario)) valortotal from itens_venda i left join produtos p on (p.codprod=i.codprod) group by i.codprod assim seria feita a soma de todas as suas vendas, e seria mostrado o valor total de cada produto. pode ser feito algo do tipo: preciso saber quais foram os produtos vendidos em março de 2003: select i.codprod, max(p.descricao), sum(i.quantidade) qtd, (sum(i.quantidade) * max(p.valorunitario)) valortotal from vendas v left join itens_venda i on (i.codvenda = v.codvenda) left join produtos p on (p.codprod=i.codprod) where extract(month from v.datadavenda)=03 and extract(year from v.datadavenda)=2003 group by i.codprod e por aí vai... p.s: por experiência própria, sugiro que você grave o valor unitário do produto na tabela de itens da venda. assim, em qualquer tempo, você terá o valor real da época da venda.


emerson.en, muito obrigado, é realmente isto que estou precisando, sobre a dica que vc me deu de colocar na tabela itens_venda o valor do produto isto já é feito, apenas em meu exemplo não fiz certo: ficou assim o codigo que vc montou.

select i.codprod, max(p.descricao), sum(i.quantidade) qtd,
(sum(i.quantidade) * max(i.vlunit)) valortotal
from itens_venda i
left join produtos p on (p.codprod=i.codprod)
group by i.codprod

Mais uma vez, Obrigado
Danilo


Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar