30/10/2015

Erro na execução de um codigo em SQL

Estou precisando calcular a media final de uma soma, so que nao estou conseguindo. Segue abaixo o codigo. Obrigado!

SELECT ITEVENDAS.CODIGO,
ESTOQUE.NOME,

SUM(ITEVENDAS.QTD) AS QTD_VENDA,
AVG(ESTOQUE.PRECO_CUSTO) AS MEDIA_PRECO_CUSTO,
AVG(ITEVENDAS.PRECO) AS MEDIA_PRECO_VENDA,
SUM(ITEVENDAS.QTD) * AVG(ESTOQUE.PRECO_CUSTO) AS TOTAL_CUSTO_MEDIO,
SUM(ITEVENDAS.QTD) * AVG(ITEVENDAS.PRECO) AS TOTAL_PRECO_VENDA,
(SUM(ITEVENDAS.QTD) * AVG(ITEVENDAS.PRECO))- (SUM(ITEVENDAS.QTD) * AVG(ESTOQUE.PRECO_CUSTO)) AS LUCRO,
VENDAS.VENDEDOR,
AVG ((SUM(ITEVENDAS.QTD) * AVG(ITEVENDAS.PRECO))- (SUM(ITEVENDAS.QTD) * AVG(ESTOQUE.PRECO_CUSTO))) AS MEDIA
----Esse de média acima que nao está funcionando)



FROM ITEVENDAS,EST_ADICIONAIS,ESTOQUE, VENDAS
WHERE ITEVENDAS.CODIGO=EST_ADICIONAIS.CODIGO AND
ITEVENDAS.CODIGO=ESTOQUE.CODIGO AND
VENDAS.NOTA=ITEVENDAS.NOTA AND
ITEVENDAS.CANCELADO=0 AND
VENDAS.VENDEDOR=1 AND
ITEVENDAS.EMISSAO>='01/01/2015' AND
ITEVENDAS.EMISSAO<='12/31/2015'


GROUP BY
ITEVENDAS.CODIGO,
ESTOQUE.NOME,
VENDAS.VENDEDOR

Respostas

30/10/2015

Marcos P

Sempre que postar código no fórum, use a tag <Inserir Código>. Isso facilita a leitura do código postado !

Qual banco de dados ?

Quando você diz que esse cálculo não funciona, é porque o banco gera algum erro ou simplesmente o valor é calculado errado ?

Substituindo as variáveis de sua própria consulta, no cálculo da média... temos :

AVG ((QTD_VENDA * MEDIA_PRECO_VENDA)) - (TOTAL_CUSTO_MEDIO)) AS MEDIA


É realmente esse código que você deseja fazer ?
Responder Citar

30/10/2015

Tiago Rodrigues

Tranquilo. Firebird. Deu como codigo invalido. Obrigado!
Responder Citar

30/10/2015

Marcos P

Tente jogar os dados ( exceto a Média ) em uma temporária ( ou sub-query ) e depois calcule a média em uma outra consulta...
Responder Citar

31/10/2015

Tiago Rodrigues

Vou estudar como se faz isso...obrigado!
Responder Citar

04/11/2015

Fernando Vicari

Boa noite Tiago,

Você pode utilizar subquery. Abaixo coloquei um código de exemplo, porém não testei.

SELECT CODIGO, NOME, QTD_VENDA, MEDIA_PRECO_CUSTO, MEDIA_PRECO_VENDA,
       TOTAL_CUSTO_MEDIO, TOTAL_PRECO_VENDA, LUCRO, VENDEDOR,
       AVG((QTD_VENDA * MEDIA_PRECO_VENDA)- (QTD_VENDA * MEDIA_PRECO_CUSTO)) AS MEDIA
  FROM (SELECT ITEVENDAS.CODIGO, ESTOQUE.NOME,
               SUM(ITEVENDAS.QTD) AS QTD_VENDA,
               AVG(ESTOQUE.PRECO_CUSTO) AS MEDIA_PRECO_CUSTO,
               AVG(ITEVENDAS.PRECO) AS MEDIA_PRECO_VENDA,
               SUM(ITEVENDAS.QTD) * AVG(ESTOQUE.PRECO_CUSTO) AS TOTAL_CUSTO_MEDIO,
               SUM(ITEVENDAS.QTD) * AVG(ITEVENDAS.PRECO) AS TOTAL_PRECO_VENDA,
               (SUM(ITEVENDAS.QTD) * AVG(ITEVENDAS.PRECO))- (SUM(ITEVENDAS.QTD) * AVG(ESTOQUE.PRECO_CUSTO)) AS LUCRO,
               VENDAS.VENDEDOR
          FROM ITEVENDAS,EST_ADICIONAIS,ESTOQUE, VENDAS
         WHERE ITEVENDAS.CODIGO=EST_ADICIONAIS.CODIGO AND
               ITEVENDAS.CODIGO=ESTOQUE.CODIGO AND
               VENDAS.NOTA=ITEVENDAS.NOTA AND
               ITEVENDAS.CANCELADO=0 AND
               VENDAS.VENDEDOR=1 AND
               ITEVENDAS.EMISSAO>='01/01/2015' AND
               ITEVENDAS.EMISSAO<='12/31/2015'
         GROUP BY ITEVENDAS.CODIGO, ESTOQUE.NOME, VENDAS.VENDEDOR)
  GROUP BY CODIGO, NOME, QTD_VENDA, MEDIA_PRECO_CUSTO, MEDIA_PRECO_VENDA,
           TOTAL_CUSTO_MEDIO, TOTAL_PRECO_VENDA, LUCRO, VENDEDOR
Responder Citar