Media com AVG dando errado nas casas decimais
Olá não consigo fazer minha media dar certo com este select no firebird. O problema são as casas decimais. O que faço? Alguém sabe? Segue SQL abaixo:
SELECT ITENSVENDA.IDPRODUTO, PRODUTOS.DESCRICAO, AVG(ITENSVENDA.PRECOVENDA) AS PRECO,
SUM(ITENSVENDA.QTD) AS SOMADeQTD, VENDAS.idCLIENTE, clientes.nome from itensvenda
inner join produtos on (produtos.idproduto = itensvenda.idproduto)
inner join vendas on (itensvenda.nrvenda = vendas.nrvenda)
inner join clientes on (vendas.idcliente = clientes.idcliente)
WHERE (CAST (VENDAS.DATA AS DATE))>=:DATAINICIAL AND
(CAST (VENDAS.DATA AS DATE)) <=:DATAFINAL AND vendas.IDcliente<>-1
GROUP BY ITENSVENDA.IDPRODUTO, PRODUTOS.DESCRICAO,
vendas.IDcliente, clientes.nome ORDER BY 6, 2
SELECT ITENSVENDA.IDPRODUTO, PRODUTOS.DESCRICAO, AVG(ITENSVENDA.PRECOVENDA) AS PRECO,
SUM(ITENSVENDA.QTD) AS SOMADeQTD, VENDAS.idCLIENTE, clientes.nome from itensvenda
inner join produtos on (produtos.idproduto = itensvenda.idproduto)
inner join vendas on (itensvenda.nrvenda = vendas.nrvenda)
inner join clientes on (vendas.idcliente = clientes.idcliente)
WHERE (CAST (VENDAS.DATA AS DATE))>=:DATAINICIAL AND
(CAST (VENDAS.DATA AS DATE)) <=:DATAFINAL AND vendas.IDcliente<>-1
GROUP BY ITENSVENDA.IDPRODUTO, PRODUTOS.DESCRICAO,
vendas.IDcliente, clientes.nome ORDER BY 6, 2
Frostlost
Curtidas 0
Respostas
Gandalf.nho
27/07/2008
Qual o problema exatamente? Arredondamento? O campo PRECOVENDA foi declarado como na tabela?
GOSTEI 0
Frostlost
27/07/2008
O que acontecia era o seguinte, eu estava fazendo a média em cima do preço do produto. O que acontecia era que em determinadas linhas eram vendidos mais de um produto com o mesmo preço e o sql estava levando em consideração apenas 1 produto por linha. Resolvi então com este novo SQL:
SELECT ITENSVENDA.IDPRODUTO, PRODUTOS.DESCRICAO, SUM(ITENSVENDA.PRECOVENDA * ITENSVENDA.qtd) / SUM(ITENSVENDA.qtd) AS PRECO,
SUM(ITENSVENDA.QTD) AS SOMADeQTD, VENDAS.idCLIENTE, clientes.nome from itensvenda
inner join produtos on (produtos.idproduto = itensvenda.idproduto)
inner join vendas on (itensvenda.nrvenda = vendas.nrvenda)
inner join clientes on (vendas.idcliente = clientes.idcliente)
WHERE (CAST (VENDAS.DATA AS DATE))>=:DATAINICIAL AND
(CAST (VENDAS.DATA AS DATE)) <=:DATAFINAL AND vendas.IDcliente=:IDcliente
GROUP BY ITENSVENDA.IDPRODUTO, PRODUTOS.DESCRICAO,
vendas.IDcliente, clientes.nome ORDER BY 6, 2
Abraços a todos
SELECT ITENSVENDA.IDPRODUTO, PRODUTOS.DESCRICAO, SUM(ITENSVENDA.PRECOVENDA * ITENSVENDA.qtd) / SUM(ITENSVENDA.qtd) AS PRECO,
SUM(ITENSVENDA.QTD) AS SOMADeQTD, VENDAS.idCLIENTE, clientes.nome from itensvenda
inner join produtos on (produtos.idproduto = itensvenda.idproduto)
inner join vendas on (itensvenda.nrvenda = vendas.nrvenda)
inner join clientes on (vendas.idcliente = clientes.idcliente)
WHERE (CAST (VENDAS.DATA AS DATE))>=:DATAINICIAL AND
(CAST (VENDAS.DATA AS DATE)) <=:DATAFINAL AND vendas.IDcliente=:IDcliente
GROUP BY ITENSVENDA.IDPRODUTO, PRODUTOS.DESCRICAO,
vendas.IDcliente, clientes.nome ORDER BY 6, 2
Abraços a todos
GOSTEI 0