Relatorio de Clientes Sem Vendas

21/11/2014

0

Ola Galera, boa tarde!!!

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

Alex Lekao

Responder

Post mais votado

21/11/2014

Olá! Chegando tarde aqui...
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

Marisiana Battistella
Responder

Mais Posts

27/11/2014

Marisiana Battistella

NOT IN, fode...tente com left join e veja o resultado.

Poderia me passar um exemplo da instrução com o left join?
Responder

27/11/2014

Fabiano Carvalho

Em testes reais(sem plano de execução) existia consultas com NOT IN que custavam demorar em média mais de uma hora, uma mudança rápida demorou menos de 5 minutos, falando-se de 200 mil registros pra mais.

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]
Responder

28/11/2014

Marisiana Battistella

Fabiano, eu conheço o uso do LEFT JOIN, mesmo assim obrigada por exemplificar.
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.
Responder

28/11/2014

Renato Rubinho

Buenos,

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
Responder

28/11/2014

Alex Lekao

Oi Isaac, boa tarde!!!

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

28/11/2014

Isaac Jose

Oi Isaac, boa tarde!!!

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

28/11/2014

Isaac Jose

Oi Isaac, boa tarde!!!

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

28/11/2014

Marisiana Battistella

Consegui descobrir o que estava acontecendo...
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!
Responder

01/12/2014

Alex Lekao

Ola pessoal, bom dia!!!

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.

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.


Marisiana,

Muito obrigado por contribuir com a minha solicitacao, suas sugestoes e analises sao sempre muito bem vindas.

Obrigado.

Consegui descobrir o que estava acontecendo...
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!
Responder

01/12/2014

Marisiana Battistella

Por nada Alex!
Também agradeço a vc e ao pessoal q sempre compartilha seus conhecimentos e suas experiências.!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar