Ed
há 11 meses
Para encontrar a lista de clientes que têm homônimos (ou seja, pessoas com o mesmo nome, mas CPFs diferentes), precisamos de uma consulta SQL que compare os nomes e conte quantas vezes cada nome aparece, excluindo o mesmo CPF. Vamos analisar as alternativas: a) SELECT Nome, CPF, (SELECT COUNT(*) FROM Cliente C1 WHERE C.Nome = C1.Nome AND C.CPF <> C1.CPF) FROM Cliente C Essa consulta faz uma subconsulta para contar homônimos, mas não agrupa os resultados, o que pode resultar em múltiplas linhas para o mesmo cliente. b) SELECT DISTINCT C1.Nome, C1.CPF, COUNT(C2) FROM Cliente C1, Cliente C2 WHERE C1.Nome = C2.Nome AND C1.CPF <> C2.CPF Essa consulta não está agrupando corretamente e pode não funcionar como esperado, pois não usa GROUP BY. c) SELECT TOP 1 C1.Nome, C1.CPF, COUNT(*) FROM Cliente C1, Cliente C2 WHERE C1.Nome = C2.Nome AND C1.CPF <> C2.CPF Essa consulta limita o resultado a apenas um registro, o que não é o desejado. d) SELECT Nome, CPF, COUNT(Cliente) FROM Cliente GROUP BY Nome, CPF HAVING COUNT(*) > 1 Essa consulta conta os clientes, mas não considera a condição de homônimos, pois está contando por CPF. e) 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 Essa consulta compara os nomes e CPFs, agrupando corretamente e contando os homônimos. A alternativa que melhor atende ao requisito de listar os clientes que têm homônimos, juntamente com o número de homônimos, é a e).
Já tem uma conta?
Ao continuar, você aceita os Termos de Uso e Política de Privacidade
Mais perguntas desse material