Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Entender questão de concurso - preciso de ajuda


Lany1982

Pergunta

Olá, tudo bem?

Estou treinando questões de concurso e estou com dificuldade para compreender duas questões as quais eu assinalei errado.

se alguém puder me explicar o porque da alternativa estar certa e as outras estarem erradas, eu agradeço imensamente.

segue as questões:

 

1)  Por muitas vezes , é necessário representar dados em tabelas, que podem ser traduzidas por relações dentro de um banco de dados, como no exemplo a seguir. Segue a imagem.

tabela.jpg

O MySQL é um dos sistemas de gerenciamento de banco de dados mais utilizados, quando se trata de bancos de dados relacionais.

considerando o exposto na imagem da tabela, assinale a alternativa que indica o resultado da query a seguir:

 

SELECT nome, idade FROM PESSOA WHERE Idade = (SELECT DISTINCT(Idade) FROM PESSOA as p1 WHERE (SELECT COUNT(DISTINCT(Idade))=2 FROM PESSOA as p2 WHERE p1.Idade <= p2.Idade))ORDER BY Nome

 

A) Caio Nogueira 43

B) Bruno Oliveira 57

C) Alice Silva 22

D) 123.456.789-01 43

E) 123.456.789-10 22

 

obs: a resposta correta é a letra A. Mas eu não entendi porque. Se alguém puder me explicar eu agradeço.!!!

 

 

 

 

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Tem certeza que este select está correto? Que você o transcreveu corretamente?

Segue abaixo a montagem que fiz para poder obter a resposta e te explicar.
 

CREATE TABLE pessoa(
nome VARCHAR(30),
cpf VARCHAR(11),
idade SMALLINT,
naturalidade VARCHAR(30)
)
;
INSERT INTO pessoa(nome,cpf,idade,naturalidade)
VALUES
('ALICE SILVA','12345678910',22,'Distrito Federal'),
('BRUNO OLIVEIRA','12365478910',57,'Rio de Janeiro'),
('CAIO NOGUEIRA','12314578901',43,'Amazonas')
;
SELECT p0.nome, p0.idade 
FROM PESSOA p0
WHERE p0.Idade = (SELECT DISTINCT(Idade) 
               FROM PESSOA AS p1 
               WHERE (SELECT COUNT(DISTINCT(Idade))=22 
                      FROM PESSOA AS p2 
                      WHERE p1.Idade <= p2.Idade
                     )
              )
ORDER BY p0.Nome

Não reconheço a instrução COUNT(DISTINCT(Idade))=2

Link para o comentário
Compartilhar em outros sites

  • 0
21 minutos atrás, Denis Courcy disse:

Tem certeza que este select está correto? Que você o transcreveu corretamente?

Segue abaixo a montagem que fiz para poder obter a resposta e te explicar.
 


CREATE TABLE pessoa(
nome VARCHAR(30),
cpf VARCHAR(11),
idade SMALLINT,
naturalidade VARCHAR(30)
)
;
INSERT INTO pessoa(nome,cpf,idade,naturalidade)
VALUES
('ALICE SILVA','12345678910',22,'Distrito Federal'),
('BRUNO OLIVEIRA','12365478910',57,'Rio de Janeiro'),
('CAIO NOGUEIRA','12314578901',43,'Amazonas')
;
SELECT p0.nome, p0.idade 
FROM PESSOA p0
WHERE p0.Idade = (SELECT DISTINCT(Idade) 
               FROM PESSOA AS p1 
               WHERE (SELECT COUNT(DISTINCT(Idade))=22 
                      FROM PESSOA AS p2 
                      WHERE p1.Idade <= p2.Idade
                     )
              )
ORDER BY p0.Nome

Não reconheço a instrução COUNT(DISTINCT(Idade))=2

 

Oi , Denis. Obrigada pelo retorno.

Você tem razão. Houve um erro na expressão do código.

Fiz as devidas correções.

Aguardo o ser retorno.

Agradeço desde já.

Abs

Link para o comentário
Compartilhar em outros sites

  • 0

WHERE (SELECT COUNT(DISTINCT(Idade))=2 

 

( o correto é 2 e não 22, como estava escrito anteriormente )

 

Eu não consegui entender este número 2:

WHERE (SELECT COUNT(DISTINCT(Idade))=2 

Sim, o select está correto.

segue a questão original:

 

https://questoes.grancursosonline.com.br/questoes-de-concursos/ciencia-da-computacao-mysql/963920

Link para o comentário
Compartilhar em outros sites

  • 0

Eu também não conhecia este tipo de arranjo.

Testei empiricamente diversas vezes até obter um entendimento.

Pelo que entendi a igualdade está relacionada com o numero do registro do retorno do select abaixo:
 

SELECT Idade 
FROM PESSOA AS p1 
WHERE (SELECT COUNT(DISTINCT(Idade))=2 
       FROM PESSOA AS p2 
       WHERE p1.Idade <= p2.Idade
      )

Se coloco 1 ele retorna a maior idade encontrada;

Se coloco 2 retorna a segunda maior idade e por aí vai.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...