Inner Join com soma (sum)

08/07/2019

0

Prezados, boa tarde.

tenho os seguintes elementos:

cod_produto
produto
entrada
coluna as saida
coluna as saldo
alerta

como faria o join relacionando duas tabelas: estoque e movimento, apresentando estas colunas de acordo com cada mês do ano??
tentei fazer desta forma mas não consegui ou faltou algum detalhe que não notei, vejam abaixo:

select estoque.cod_produto, estoque.produto, estoque.qt as entrada, sum(movimento.qt) as saida,estoque.qt - sum(movimento.qt) as saldo,estoque.alerta,movimento.mes as mes from estoque join movimento
on estoque.cod_produto = movimento.cod_produto group by cod_produto;

podem me ajudar, gratidão.
Leonardo

Leonardo

Responder

Posts

10/07/2019

Emerson Nascimento

como funciona?
a tabela estoque são os movimentos de entrada e a tabela movimento são os movimentos de saída?
porque um campo produto e outro cod_produto?
Responder

11/07/2019

Ricardo Pestana

Leonardo,

Assumindo que as colunas e o join estão corretos, vc teria apenas que colocar todas as colunas que deseja agrupar antes das funções de soma... e elas tem que estar na mesma ordem que estiverem no group by. Após essas colunas todas as medidas ou métricas devem estar em uma função de agregação/ou de grupo tipo sum, count, avg.... editei mais ou menos seu select para dar um exemplo...

Outra coisa não vai funcionar estoque.qt - sum(movimento.qt)... para isso vc vai ter que fazer um select externo a essa consulta e aí sim fazer esse calculo. Eu tentaria usando ainda seu select como exemplo,:

select t.cod_produto, t.produto, t.mes, t.entrada, t.saida, (t.entrada - t.saida) as saldo, t.alerta from
(
select estoque.cod_produto, estoque.produto, movimento.mes as mes
sum(estoque.qt) as entrada, sum(movimento.qt) as saida, max(estoque.qt) as qtestoque, sum(movimento.qt) as qtmov, estoque.alerta,from estoque
join movimento on estoque.cod_produto = movimento.cod_produto
group by estoque.cod_produto, estoque.produto, movimento.mes
) as t;
Responder

11/07/2019

Sérgio Saibel

Prezados, boa tarde.

tenho os seguintes elementos:

cod_produto
produto
entrada
coluna as saida
coluna as saldo
alerta

como faria o join relacionando duas tabelas: estoque e movimento, apresentando estas colunas de acordo com cada mês do ano??
tentei fazer desta forma mas não consegui ou faltou algum detalhe que não notei, vejam abaixo:

select estoque.cod_produto, estoque.produto, estoque.qt as entrada, sum(movimento.qt) as saida,estoque.qt - sum(movimento.qt) as saldo,estoque.alerta,movimento.mes as mes from estoque join movimento
on estoque.cod_produto = movimento.cod_produto group by cod_produto;

podem me ajudar, gratidão.



Bom dia....

Estava com um problema semelhante que me foi resolvido, dá uma olhada no post para ver se te ajuda: https://www.devmedia.com.br/forum/condicao-where-sem-agrupamento-de-campo-postgres/603536

Abraço
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar