Array
(
)

Erro na execução de um codigo em SQL

Tiago Rodrigues
   - 30 out 2015

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

Marcos P
   - 30 out 2015

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 :

#Código

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


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

Tiago Rodrigues
   - 30 out 2015

Tranquilo. Firebird. Deu como codigo invalido. Obrigado!

Marcos P
   - 30 out 2015

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...

Tiago Rodrigues
   - 31 out 2015

Vou estudar como se faz isso...obrigado!

Fernando Vicari
   - 04 nov 2015

Boa noite Tiago,

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

#Código

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