Questão nº 38
Questão de Análise de Sistemas · FGV TJDFT 2022 (nº 38)
Considere um banco de dados relacional que contém uma única tabela, TURFE, cuja estrutura é exibida com sua instância a seguir.
Para cada páreo, ou corrida, são armazenados os nomes dos cavalos participantes e os respectivos tempos. A classificação de cada cavalo numa corrida segue a ordem crescente de tempo. Não há empates.
Com relação à tabela TURFE, descrita anteriormente, analise o comando SQL a seguir.
select distinct cavalo
from TURFE t1
where not exists
(select * from TURFE t2, TURFE t3
where t2.cavalo = t1.cavalo
and t3.pareo = t2.pareo
and t3.tempo > t2.tempo)
A execução do comando acima produz, somente, todos os cavalos que, em suas corridas:
- Anunca chegaram em último lugar;
- Bnunca venceram e nunca chegaram em último lugar;
- Cnunca venceram;
- Dsempre chegaram em último lugar; (alternativa correta)
- Esempre venceram.
Resposta comentada
Gabarito Alternativa D
O comando usa um NOT EXISTS com uma subconsulta correlacionada que procura, para cada cavalo, se existe outro cavalo na mesma corrida com tempo maior. Se não existe ninguém com tempo maior, significa que aquele cavalo tem o maior tempo da corrida, ou seja, chegou em último (já que não há empates). O DISTINCT só evita repetições se o cavalo correu em vários páreos.
- (A) Incorreta: cavalos que nunca chegaram em último teriam sempre alguém com tempo maior que o deles, então o
NOT EXISTSfalharia e eles não seriam listados. - (B) Incorreta: a condição não verifica vitória (menor tempo), apenas ausência de tempo maior, então não exclui vencedores.
- (C) Incorreta: a condição não verifica vitória, apenas ausência de tempo maior, então vencedores podem ser listados se também forem últimos em outras corridas.
- (D) Correta: o
NOT EXISTSsó é verdadeiro quando não há nenhumt3com tempo maior que o do cavalo na mesma corrida, ou seja, ele tem o maior tempo (último lugar) em todas as corridas que participou. - (E) Incorreta: sempre venceram exigiria que não houvesse tempo menor, mas a subconsulta verifica apenas tempo maior, então o comando não identifica vencedores.
Fonte: FGV TJDFT 2022 Analista Judiciário - Análise de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.
