Criar uma query de consultar gerando uma Media mensal sem considerar os meses que nao tem valor
Bom galera basicamente eu gostaria de pegar a movimentação de vendas dos ultimos 12 meses de uma empresa que presto serviço, e fazer uma media de venda de cada produto somente dos meses que existir venda, não posso pegar simplesmente e fazer SUM(qtde_vendida)/12, por que dessa forma, todo produto novo em estoque quebrara o resultando trazendo uma media que não é verdadeira
se alguem tiver alguma ideia de como faço isso eu agradeceria a ajuda
se alguem tiver alguma ideia de como faço isso eu agradeceria a ajuda
Phellipe Rodrigues
Curtidas 0
Melhor post
Leandro Chiodini
25/05/2018
Bom dia.
Você pode ir nesta linha de raciocínio..
[]´s
Você pode ir nesta linha de raciocínio..
select avg(sel.total) as media from(select count(distinct(month(dt_pg))) as meses, month(dt_pg), sum(Valor) as total from teste group by year(dt_pg), month(dt_pg)) as sel
[]´s
GOSTEI 2
Mais Respostas
Leandro Chiodini
25/05/2018
pode ser somente
select avg(sel.total) as media from(select sum(Valor) as total from teste group by year(dt_pg), month(dt_pg)) as sel
GOSTEI 0
Emerson Nascimento
25/05/2018
tente assim:
select p.produto, sum(v.qtde_vendida) total, count(distinct month(v.data_venda)) num_meses_venda, sum(v.qtde_vendida) / count(distinct month(v.data_venda)) qtde_media_mes from produtos p inner join vendas v on v.produto = p.produto group by p.produto order by p.produto
GOSTEI 1
Phellipe Rodrigues
25/05/2018
Amigo eu compreendi como faz, mas da uma olhada na minha query, eu nao consegui ver como encaixar nela, se puder me ajudar ficarei grato
select pd.codigo+'-'+p.descricao as produto, media.media, sum(pd.qtde_vol)as qtdeVendida, cast(p.est_atual/p.qtdeporcaixa as numeric(15,2))as estoque, cast((p.est_atual/p.qtdeporcaixa) - sum(pd.qtde_vol)as numeric(15,2)) as pedidoVenda, cast((p.est_atual/p.qtdeporcaixa)-media.media-sum(pd.qtde_vol)as numeric(15,2)) as pedidoMedia from PEDIDOS.dbo.pedidos_det pd inner join PEDIDOS.dbo.pedidos_cab pc on pc.numero = pd.numero inner join ESTOQUE.dbo.Produtos p on p.codigo = pd.codigo inner join (select pd.codigo, SUM(pd.qtde_vol)/6 media from PEDIDOS.dbo.pedidos_det pd inner join PEDIDOS.dbo.pedidos_cab pc on pc.numero = pd.numero where pc.dt_emissao >= '2017-25-11' and pc.dt_emissao <= '2018-25-05' and pc.status = 2 group by pd.codigo)as media on media.codigo = pd.codigo where pc.dt_emissao >='2018-01-05' and pc.dt_emissao <= '2018-25-05' and pc.status <> 2 and pc.status <> 3 and p.grupo = 1 group by pd.codigo,p.descricao,p.est_atual,media.media,p.qtdeporcaixa order by produto
GOSTEI 0
Phellipe Rodrigues
25/05/2018
tente assim:
select p.produto, sum(v.qtde_vendida) total, count(distinct month(v.data_venda)) num_meses_venda, sum(v.qtde_vendida) / count(distinct month(v.data_venda)) qtde_media_mes from produtos p inner join vendas v on v.produto = p.produto group by p.produto order by p.produto
Amigo eu compreendi como faz, mas da uma olhada na minha query, eu nao consegui ver como encaixar nela, se puder me ajudar ficarei grato
select pd.codigo+'-'+p.descricao as produto, media.media, sum(pd.qtde_vol)as qtdeVendida, cast(p.est_atual/p.qtdeporcaixa as numeric(15,2))as estoque, cast((p.est_atual/p.qtdeporcaixa) - sum(pd.qtde_vol)as numeric(15,2)) as pedidoVenda, cast((p.est_atual/p.qtdeporcaixa)-media.media-sum(pd.qtde_vol)as numeric(15,2)) as pedidoMedia from PEDIDOS.dbo.pedidos_det pd inner join PEDIDOS.dbo.pedidos_cab pc on pc.numero = pd.numero inner join ESTOQUE.dbo.Produtos p on p.codigo = pd.codigo inner join (select pd.codigo, SUM(pd.qtde_vol)/6 media from PEDIDOS.dbo.pedidos_det pd inner join PEDIDOS.dbo.pedidos_cab pc on pc.numero = pd.numero where pc.dt_emissao >= '2017-25-11' and pc.dt_emissao <= '2018-25-05' and pc.status = 2 group by pd.codigo)as media on media.codigo = pd.codigo where pc.dt_emissao >='2018-01-05' and pc.dt_emissao <= '2018-25-05' and pc.status <> 2 and pc.status <> 3 and p.grupo = 1 group by pd.codigo,p.descricao,p.est_atual,media.media,p.qtdeporcaixa order by produto
GOSTEI 0
Emerson Nascimento
25/05/2018
select pd.codigo+'-'+p.descricao as produto, sum(pd.qtde_vol) as qtdeVendida, cast(p.est_atual/p.qtdeporcaixa as numeric(15,2)) as estoque, cast((p.est_atual/p.qtdeporcaixa) - sum(pd.qtde_vol) as numeric(15,2)) as pedidoVenda, -- não entendi sum(pd.qtde_vol) / count(distinct month(pc.dt_emissao)) media -- calcula a média -- cast((p.est_atual/p.qtdeporcaixa) - media.media-sum(pd.qtde_vol)as numeric(15,2)) as pedidoMedia -- não entendi from PEDIDOS.dbo.pedidos_det pd inner join PEDIDOS.dbo.pedidos_cab pc on pc.numero = pd.numero inner join ESTOQUE.dbo.Produtos p on p.codigo = pd.codigo where pc.dt_emissao between '2018-01-05' and '2018-25-05' and pc.status <> 2 and pc.status <> 3 and p.grupo = 1 group by pd.codigo,p.descricao,p.est_atual,p.qtdeporcaixa order by produto
GOSTEI 1
Phellipe Rodrigues
25/05/2018
select pd.codigo+'-'+p.descricao as produto, sum(pd.qtde_vol) as qtdeVendida, cast(p.est_atual/p.qtdeporcaixa as numeric(15,2)) as estoque, cast((p.est_atual/p.qtdeporcaixa) - sum(pd.qtde_vol) as numeric(15,2)) as pedidoVenda, -- não entendi sum(pd.qtde_vol) / count(distinct month(pc.dt_emissao)) media -- calcula a média -- cast((p.est_atual/p.qtdeporcaixa) - media.media-sum(pd.qtde_vol)as numeric(15,2)) as pedidoMedia -- não entendi from PEDIDOS.dbo.pedidos_det pd inner join PEDIDOS.dbo.pedidos_cab pc on pc.numero = pd.numero inner join ESTOQUE.dbo.Produtos p on p.codigo = pd.codigo where pc.dt_emissao between '2018-01-05' and '2018-25-05' and pc.status <> 2 and pc.status <> 3 and p.grupo = 1 group by pd.codigo,p.descricao,p.est_atual,p.qtdeporcaixa order by produto
Cara deu certinho, muito obrigado mesmo pela ajuda
GOSTEI 0