Questão nº 44
Questão de Tecnologia da Informação · FGV TJ-AP 2024 (nº 44)
Quando referenciadas, considere as tabelas relacionais Competidor e Disputa, cujas estruturas e instâncias são descritas abaixo. Todas as colunas são definidas como strings.
A tabela Disputa contém as disputas realizadas entre competidores que aparecem na tabela Competidor. Em cada disputa há dois competidores, um com camisa azul e outro com camisa verde.
Considerando as tabelas Competidor e Disputa, descritas anteriormente, analise o comando SQL a seguir.
delete from Competidor
where (select sum(1)
from Disputa d where d.azul = Nome)
< (select sum(1) from Disputa d
where d.verde = Nome)
O número de linhas removidas na execução do comando acima é:
- A6;
- B4;
- C2;
- D1; (alternativa correta)
- E0.
Resposta comentada
Gabarito Alternativa D
O comando DELETE remove linhas de uma tabela. A cláusula WHERE filtra quais linhas serão removidas, avaliando uma condição para cada linha. Neste caso, a condição compara o número de vezes que um competidor aparece como "azul" versus "verde" em disputas, usando subconsultas correlacionadas com a função de agregação SUM(1) (que age como um contador de ocorrências).
- (A) Incorreta: Esta alternativa implicaria que todos os competidores seriam removidos, o que não ocorre após a análise das condições.
- (B) Incorreta: Esta alternativa implicaria que 4 competidores seriam removidos, o que não corresponde à análise.
- (C) Incorreta: Esta alternativa implicaria que 2 competidores seriam removidos, o que não corresponde à análise.
- (D) Correta: Analisando cada competidor:
- Alice: Aparece 2 vezes como 'azul' (Alice-Bob, Alice-David) e 1 vez como 'verde' (Eve-Alice). Condição:
2 < 1é Falso. Alice não é removida. - Bob: Aparece 1 vez como 'azul' (Bob-Carol) e 2 vezes como 'verde' (Alice-Bob, Frank-Bob). Condição:
1 < 2é Verdadeiro. Bob é removido. - Carol: Aparece 1 vez como 'azul' (Carol-Eve) e 1 vez como 'verde' (Bob-Carol). Condição:
1 < 1é Falso. Carol não é removida. - David: Aparece 1 vez como 'azul' (David-Frank) e 1 vez como 'verde' (Alice-David). Condição:
1 < 1é Falso. David não é removido. - Eve: Aparece 1 vez como 'azul' (Eve-Alice) e 1 vez como 'verde' (Carol-Eve). Condição:
1 < 1é Falso. Eve não é removida. - Frank: Aparece 1 vez como 'azul' (Frank-Bob) e 1 vez como 'verde' (David-Frank). Condição:
1 < 1é Falso. Frank não é removido.
Apenas o competidor 'Bob' satisfaz a condição, resultando em 1 linha removida. A armadilha aqui pode ser a contagem manual das ocorrências ou a interpretação do operador de comparação<.
- Alice: Aparece 2 vezes como 'azul' (Alice-Bob, Alice-David) e 1 vez como 'verde' (Eve-Alice). Condição:
- (E) Incorreta: Esta alternativa implicaria que nenhum competidor seria removido, o que é falso, pois 'Bob' atende à condição.
Fonte: FGV TJ-AP 2024 Analista Judiciário - TI - Banco de Dados (Caderno Tipo 1). Reproduzida para fins de estudo.
