Relatorio de Clientes Sem Vendas
21/11/2014
0
Estou refazendo um relatorio de clientes sem vendas aqui para a empresa e gostaria da sugestao de vcs e uma troca de experiencias para montar esse relatorio.
Estou com o esquema de montagem utilizando a clausula NOT EXISTS para montar esse relatorio, gostaria de sugestoes e opinioes do que seria mais performatico, se nao me engano a NOT EXISTS e NOT IN tem o mesmo peso na montagem do script.
A ideia basica da montagem do relatorio fazendo uso de uma destas duas clausulas que mencionei seria pegar os clientes da loja do usuario e linkar com a movimentacao de uma data inicial ate o presente momento e se o cliente nao for encontrado(NOT EXISTS ou NOT IN) ele sera considerado sem venda.
Gostaria de discutir com vcs e assim tomar uma melhor decisao nesta montagem.
Desde ja agradeco a todos.
Abraco.
Alex - Lekao
Alex Lekao
Post mais votado
21/11/2014
Fiquei em dúvida com relação a lógica utilizada na instrução que o Jothaz passou, pois fiz um teste em uma das minhas bases de dados e não funciona.
SELECT C.CODCLI, C.NOME, C.DATACAD FROM CLIENTE C LEFT JOIN VENDA V ON V.CODCLI = C.CODCLI WHERE V.CODCLI IS NULL
Todos os registros que estão armazenados na tabela VENDA possuem um cliente vinculado.
Se restringir o retorno da consulta aplicando "WHERE V.CODCLI IS NULL", nunca vai retornar clientes pois não existe registro que não possua um cliente informado na tabela VENDA.
Marisiana Battistella
Mais Posts
27/11/2014
Marisiana Battistella
Poderia me passar um exemplo da instrução com o left join?
27/11/2014
Fabiano Carvalho
Segue uma imagem que explica o uso do left join.
Fiz no excel pois estou sem SQL instalado.
Primeira consulta
SELECT * FROM ESQUERDA LEFT JOIN DIREITA ON ID_ESQUERDA = ID_DIREITA
Segunda Consulta.
SELECT * FROM ESQUERDA LEFT JOIN DIREITA ON ID_ESQUERDA = ID_DIREITA WHERE ID_DIREITA IS NULL
[img:descricao=Left Join]http://arquivo.devmedia.com.br/forum/imagem/332951-20141127-222225.png[/img]
28/11/2014
Marisiana Battistella
Pedi um exemplo de solução aplicada à situação apresentada pelo Alex com o uso do LEFT JOIN, pois testei a situação apresentada pelo Jothaz e não obtive os resultados corretos. Então, queria saber como você faria o SELECT para retornar os dados, visto que você comentou que o uso do LEFT JOIN é a melhor solução.
28/11/2014
Renato Rubinho
Tenho resultados mais rápidos conforme abaixo:
SELECT C.CODCLI, C.NOME, C.DATACAD FROM CLIENTE C LEFT OUTER JOIN VENDA V ON V.CODCLI = C.CODCLI AND V.DATACAD BETWEEN '01/10/2014' AND '31/10/2014' WHERE V.CODCLI IS NULL GROUP BY C.CODCLI, C.NOME, C.DATACAD
Abraççç,
rrubinho
28/11/2014
Alex Lekao
Show cara.
Obrigado, a finalidade que preciso era diferente, mas a sua sugestao caiu como uma luva.
Vou analisar sua sugestao e tentar montar algo em cima disso, acho que a nossa gerencia comercial e diretores irao gostar.
Muito obrigado mais uma vez.
Abraco.
28/11/2014
Isaac Jose
Show cara.
Obrigado, a finalidade que preciso era diferente, mas a sua sugestao caiu como uma luva.
Vou analisar sua sugestao e tentar montar algo em cima disso, acho que a nossa gerencia comercial e diretores irao gostar.
Muito obrigado mais uma vez.
Abraco.
Opa por nada Lekao. então criei esse relatorio para prospectar novos contras. tive um aumento de 12% no primeiro mes. e esses são os caras que você deve vender o peixe hehe..
em muitos casos as empresas tem uma boa carteira de clientes mais geralmente e mau gerenciada mostrando isso a Diretoria vc pode ter certeza que ela vão aprovar essa linha.
abraços.
28/11/2014
Isaac Jose
Show cara.
Obrigado, a finalidade que preciso era diferente, mas a sua sugestao caiu como uma luva.
Vou analisar sua sugestao e tentar montar algo em cima disso, acho que a nossa gerencia comercial e diretores irao gostar.
Muito obrigado mais uma vez.
Abraco.
Opa por nada Lekao. então criei esse relatorio para prospectar novos contras. tive um aumento de 12% no primeiro mes. e esses são os caras que você deve vender o peixe hehe..
em muitos casos as empresas tem uma boa carteira de clientes mais geralmente e mau gerenciada mostrando isso a Diretoria vc pode ter certeza que ela vão aprovar essa linha.
abraços.
28/11/2014
Marisiana Battistella
Como eu trabalho com a modelagem multidimensional de dados, eu precisei envolver 3 tabelas no meu caso de testes, para gerar um exemplo que atendesse a proposta inicial do tópico. Por isso, não funcionava, então fiz um outro teste envolvendo apenas duas tabelas e funcionou.
Desculpem meus questionamentos, mas eu realmente tinha ficado em dúvida quando apliquei o exemplo e não tive sucesso.
Para a minha estrutura de banco a melhor alternativa continua sendo o NOT IN e a performance é muito boa apesar de analisar uma grande quantidade de dados.
Obrigada a todos!
01/12/2014
Alex Lekao
Isaac, obrigado pela sugestao, temos gerentes comerciais que fazem esse intermeio juntamente com promotores de vendas.
Normalmente sao eles que fazem uso destes relatorios e fazem esse trabalho de prospeccao e reconquista de clientes e via de regra eles solicitam relatorios para eu desenvolver dentro de suas necessidades, a sua sugestao sera vista por mim e devera ser implementada como uma opcao a mais de trabalho para eles, os caras sempre gostam de novos relatorios de analises, tem um que eh quase fanatico, o cara eh extrememente analitoc. rsrsr
mais uma vez obrigado.
em muitos casos as empresas tem uma boa carteira de clientes mais geralmente e mau gerenciada mostrando isso a Diretoria vc pode ter certeza que ela vão aprovar essa linha.
abraços.
Marisiana,
Muito obrigado por contribuir com a minha solicitacao, suas sugestoes e analises sao sempre muito bem vindas.
Obrigado.
Como eu trabalho com a modelagem multidimensional de dados, eu precisei envolver 3 tabelas no meu caso de testes, para gerar um exemplo que atendesse a proposta inicial do tópico. Por isso, não funcionava, então fiz um outro teste envolvendo apenas duas tabelas e funcionou.
Desculpem meus questionamentos, mas eu realmente tinha ficado em dúvida quando apliquei o exemplo e não tive sucesso.
Para a minha estrutura de banco a melhor alternativa continua sendo o NOT IN e a performance é muito boa apesar de analisar uma grande quantidade de dados.
Obrigada a todos!
01/12/2014
Marisiana Battistella
Também agradeço a vc e ao pessoal q sempre compartilha seus conhecimentos e suas experiências.!
Clique aqui para fazer login e interagir na Comunidade :)