Questão nº 54
Questão de Tecnologia da Informação · FGV TJ-SE Servidor 2023 (nº 54)
Considere uma tabela relacional TAB, com colunas A e B. A coluna A constitui a chave primária de TAB. A instância de TAB contém 100 linhas, e em todas as linhas o valor da coluna B é 10.
Nesse contexto, analise o comando SQL a seguir.
select from TAB t
where not exists
(select from TAB tt
where t.B = tt.B and t.A > tt.A)
Além da linha de títulos, o número de linhas produzidas pelo comando acima é:
- A0;
- B1; (alternativa correta)
- C98;
- D99;
- E100.
Resposta comentada
Gabarito Alternativa B
O comando NOT EXISTS em SQL verifica se uma subconsulta retorna alguma linha. Se a subconsulta não retornar nenhuma linha, a condição NOT EXISTS é verdadeira. Quando usado com uma subconsulta correlacionada (que referencia a linha da consulta externa), ele é frequentemente utilizado para encontrar valores mínimos ou máximos dentro de grupos ou na tabela toda.
- (A) Incorreta: O comando sempre selecionará pelo menos uma linha, pois sempre haverá um valor mínimo para a coluna
A. - (B) Correta: O comando busca linhas
tpara as quais não existe nenhuma outra linhattna tabela ondet.B = tt.B(que é sempre verdade, pois todos osBsão 10) Et.A > tt.A. Isso significa que estamos procurando por uma linhatpara a qual não existe nenhuma outra linhattcom um valor deAmenor quet.A. Em outras palavras, a condição seleciona a linha cujo valor deAé o menor de toda a tabela. ComoAé chave primária, todos os seus valores são únicos, garantindo que haverá apenas uma linha com o menor valor deA. - (C) Incorreta: Não há lógica para selecionar 98 linhas.
- (D) Incorreta: A armadilha aqui é pensar que o
NOT EXISTScomt.A > tt.Apoderia excluir apenas o maior valor, ou que a condiçãot.B = tt.Bde alguma forma alteraria o resultado para um número próximo ao total. No entanto, a lógica doNOT EXISTScom o operador>(maior que) na subconsulta, quando a condiçãot.B = tt.Bé sempre satisfeita, aponta diretamente para a seleção do valor mínimo deA, que é único. - (E) Incorreta: A condição
NOT EXISTSé bastante restritiva e não permite que todas as 100 linhas sejam selecionadas, pois para qualquer linha que não seja a de menorA, sempre existirá uma linhattcomtt.Amenor.
Fonte: FGV TJ-SE Servidor 2023 Analista Judiciário - Análise de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.