Ed
há 11 meses
Para encontrar a lista de clientes que têm homônimos, precisamos comparar os registros na tabela "Cliente" onde o nome é o mesmo, mas o CPF é diferente. Vamos analisar cada uma das opções: a) SELECT C1.Nome, C1.CPF, COUNT(*) FROM Cliente C1, Cliente C2 WHERE C1.CPF <> C2.CPF AND C1.Nome = C2.Nome GROUP BY C1.Nome, C1.CPF HAVING COUNT(*) > 0 Esta consulta parece correta, pois conta os homônimos e agrupa pelo nome e CPF, mas o HAVING COUNT(*) > 0 não é necessário, pois o GROUP BY já garante que haverá resultados. b) SELECT DISTINCT C1.Nome, C1.CPF, COUNT(C2) FROM Cliente C1, Cliente C2 WHERE C1.Nome = C2.Nome AND C1.CPF <> C2.CPF Esta consulta não agrupa os resultados, o que pode levar a resultados incorretos, pois COUNT(C2) não está sendo agrupado corretamente. c) SELECT TOP 1 C1.Nome, C1.CPF, COUNT(*) FROM Cliente C1, Cliente C2 WHERE C1.Nome = C2.Nome AND C1.CPF <> C2.CPF Esta consulta limita os resultados a apenas um registro (TOP 1), o que não atende ao requisito de listar todos os homônimos. d) SELECT Nome, CPF, (SELECT COUNT(*) FROM Cliente C1 WHERE C.Nome = C1.Nome AND C.CPF <> C1.CPF) FROM Cliente C Esta consulta pode funcionar, mas não está agrupando os resultados, o que pode resultar em múltiplas linhas para o mesmo cliente. e) SELECT Nome, CPF, COUNT(Cliente) FROM Cliente GROUP BY Nome, CPF HAVING COUNT(*) > 1 Esta consulta conta os clientes, mas não considera a condição de CPF diferente, portanto não atende ao requisito de homônimos. Após analisar todas as opções, a que melhor atende ao requisito de listar clientes com homônimos e contar quantos homônimos cada um tem é a a), embora tenha um pequeno detalhe no HAVING que poderia ser removido. Portanto, a resposta correta é: a) SELECT C1.Nome, C1.CPF, COUNT(*) FROM Cliente C1, Cliente C2 WHERE C1.CPF <> C2.CPF AND C1.Nome = C2.Nome GROUP BY C1.Nome, C1.CPF HAVING COUNT(*) > 0
Já tem uma conta?
Ao continuar, você aceita os Termos de Uso e Política de Privacidade
Mais perguntas desse material