Inner Join com soma (sum)

MySQL

08/07/2019

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

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

08/07/2019

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?
GOSTEI 0
Ricardo Pestana

Ricardo Pestana

08/07/2019

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;
GOSTEI 0
Sérgio Saibel

Sérgio Saibel

08/07/2019

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
GOSTEI 0
POSTAR