Usuário com melhor resposta
Duvida com sum() em select

Pergunta
-
fiz esse select, esta errado mais não sei como acertar, o valor retornado no count() e no sum()
Select top 5 a.ven_codigo, a.cad_cliente cliente,
c.cad_razao, count(a.ven_codigo) as qtvenda, sum(b.vpr_qtde) as qtProduto,
sum(a.ven_total) as valorVenda from venda a
left Join cadastro c on a.cad_cliente = c.cad_codigo
left Join vendaproduto b on a.ven_codigo = b.ven_codigo
Where Coalesce(a.ven_cancelada,0) = 0
and a.ven_data >= '2017-01-01'
and a.ven_data <= '2017-01-31'
Group By 1,2,3
Order By valorVenda descO que preciso retornar nesse select?
r: pegar as 5 maiores Clientes em um determinado período. No primeiro count() tenho que trazer quantidade de vendas que o cliente fez, o primeiro sum(), quantas unidades esse cliente comprou, no segundo sum() o valor em reais que o cliente comprou
Alguém pode me dar um rumo.
- Tipo Alterado Junin incipiente quarta-feira, 22 de novembro de 2017 11:37 Encerrado
Respostas
-
Deleted
- Marcado como Resposta Junin incipiente sexta-feira, 27 de abril de 2018 17:44
Todas as Respostas
-
amigo, preciso de um pouco mais de detalhes para poder te ajudar.
pelo que vi, vc está fazendo um join da tabela venda (a), com cadastro (c) e vendaproduto (b).
o que tem na tabela venda?
o que tem na tabela cadastro?
o que tem na tabela vendaproduto?
poderia dar um exemplo mais claro para que eu possa simular e poder te ajudar?
na tabela vendaproduto tem o codigo do cliente e a quantidade dos produtos com os valores, correto?
-
Boa noite,
Junin, experimente dessa forma:
Select top 5 a.cad_cliente cliente, c.cad_razao, count(a.ven_codigo) as qtvenda, sum(b.vpr_qtde) as qtProduto, sum(a.ven_total) as valorVenda from venda a left Join cadastro c on a.cad_cliente = c.cad_codigo left Join vendaproduto b on a.ven_codigo = b.ven_codigo Where Coalesce(a.ven_cancelada,0) = 0 and a.ven_data >= '2017-01-01' and a.ven_data <= '2017-01-31' Group By a.cad_cliente, c.cad_razao Order By valorVenda desc
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Rafael Almeida - MVPMVP terça-feira, 21 de novembro de 2017 23:01
-
-
-
-
-
Foi feitas perguntas que estão sem respostas.(Fernando.Jarcen)
Nos mostre o diagrama de como essas tabelas estão re relacionando ,
acredito que esse campo SUM(a.ven_total) AS valorVenda esteje errado.
a soma (valorVenda) deveria vir ta tabela vendaproduto,
de qualquer maneira se essa query não retornar o que vc deseja nos retorne a estrutura das tabelas
venda,cadastro, vendaproduto
SELECT TOP 5 a.cad_cliente cliente, COUNT(a.ven_codigo) AS qtvenda, SUM(b.vpr_qtde) AS qtProduto, SUM(a.ven_total) AS valorVenda FROM venda a LEFT JOIN cadastro c ON a.cad_cliente = c.cad_codigo LEFT JOIN vendaproduto b ON a.ven_codigo = b.ven_codigo WHERE COALESCE(a.ven_cancelada, 0) = 0 AND a.ven_data >= '2017-01-01' AND a.ven_data <= '2017-01-31' GROUP BY a.cad_cliente ORDER BY valorVenda DESC;
Wesley Neves - Brasilia-DF
https://wesleyneves.wordpress.com/
MTA-SQL Server
MTA- Web Development
Analista Desenvolvedor.NET
Pós-Graduando em Banco de Dados
"Se a resposta for útil ou ajudar ,não esqueça de marcar"
Wesley Neves
-
Junin, segue outra sugestão para teste:
Select top 5 a.cad_cliente cliente, c.cad_razao, count(a.ven_codigo) as qtvenda, sum(qtProduto) as qtProduto, sum(a.ven_total) as valorVenda from venda a left Join cadastro c on a.cad_cliente = c.cad_codigo cross apply ( select sum(b.vpr_qtde) as qtProduto from vendaproduto b where b.ven_codigo = a.ven_codigo ) as ca Where Coalesce(a.ven_cancelada,0) = 0 and a.ven_data >= '2017-01-01' and a.ven_data <= '2017-01-31' Group By a.cad_cliente, c.cad_razao Order By valorVenda desc
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
-
Deleted
- Marcado como Resposta Junin incipiente sexta-feira, 27 de abril de 2018 17:44