Logo Passei Direto
Buscar
Considere uma tabela em um banco de dados relacional. A tabela apresenta três atributos do tipo texto, sendo CPF o campo chave. Cliente(CPF, Nome, Endereco) Considerando-se que homônimos são pessoas que possuem o mesmo nome, mas CPF diferentes, a expressão SQL que resulta na lista dos Clientes que têm homônimos, juntamente com o número de homônimos, é:

a. SELECT Nome, CPF, (SELECT COUNT(*) FROM Cliente C1 WHERE C.Nome = C1.Nome AND C.CPF <> C1.CPF) FROM Cliente C
b. SELECT DISTINCT C1.Nome, C1.CPF, COUNT(C2) FROM Cliente C1, Cliente C2 WHERE C1.Nome = C2.Nome AND C1.CPF <> C2.CPF
c. SELECT TOP 1 C1.Nome, C1.CPF, COUNT(*) FROM Cliente C1, Cliente C2 WHERE C1.Nome = C2.Nome AND C1.CPF <> C2.CPF
d. SELECT Nome, CPF, COUNT(Cliente) FROM Cliente GROUP BY Nome, CPF HAVING COUNT(*) > 1
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
User badge image
Desenvolvendo com Questões

há 11 meses

Respostas

User badge image

Ed Verified user icon

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

Essa resposta te ajudou?

0
Dislike0
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar essa resposta. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Ainda com dúvidas?

Envie uma pergunta e tenha sua dúvida de estudo respondida!

Essa pergunta também está no material:

Mais perguntas desse material

Um administrador de dados deseja fazer o seguinte relatório: Todas as pessoas, os mesmos quais já trabalharam e o total recebido por cada filme. Se uma pessoa nunca trabalhou num filme, ela deve aparecer no relatório. A atividade que a pessoa exerceu no filme (ex: ator, diretor, câmera etc.) não é importante para o relatório. Qual consulta retorna o conjunto resposta correto?

a. SELECT T.nomePessoa, T.nomeFilme, sum(T.salário) total FROM Pessoa P LEFT OUTER JOIN Trabalha T ON P.nomePessoa = T.nomePessoa LEFT OUTER JOIN Filme F
b. SELECT P.nomePessoa, F.nomeFilme, sum(T.salário) total FROM Pessoa P INNER JOIN Trabalha T ON P.nomePessoa = T.nomePessoa INNER JOIN Filme F ON F.nomeFilme = T.nomeFilme WHERE T.atividade IS NOT NULL AND T.salário > 0 GROUP BY P.nomePessoa, F.nomeFilme
c. SELECT P.nomePessoa, T.nomeFilme, sum(T.salário) total FROM Pessoa P LEFT OUTER JOIN Trabalha T ON P.nomePessoa = T.nomePessoa GROUP BY P.nomePessoa, T.nomeFilme HAVING sum(T.salário) > 0
d. SELECT P.nomePessoa, T.nomeFilme, sum(T.salário) total FROM Pessoa P LEFT OUTER JOIN Trabalha T ON P.nomePessoa = T.nomePessoa GROUP BY P.nomePessoa, T.nomeFilme
e. SELECT T.nomePessoa, T.nomeFilme, sum(T.salário) total FROM Pessoa P INNER JOIN Trabalha T ON P.nomePessoa = T.nomePessoa GROUP BY T.nomePessoa, T.nomeFilme

Mais conteúdos dessa disciplina