Questão nº 61

Questão de Informática · FGV TJTO 2022 (nº 61)

FGV2022Técnico Judiciário - InformáticaInformática
Gabarito: Bver comentário ↓

No SQL Server, considere uma tabela T com quatro linhas, nas quais os valores inteiros da coluna a são 1, 2, 4 e 6.
O resultado produzido pela execução do comando `select top 2 3*a x from T order by 1` exibe, exatamente, os valores:

Resposta comentada

Gabarito Alternativa B

O comando SELECT TOP N ... ORDER BY X no SQL Server primeiro calcula todas as expressões na lista SELECT, depois ordena essas linhas resultantes conforme especificado no ORDER BY, e por fim seleciona as N primeiras linhas após a ordenação. A "pegadinha" comum é confundir a ordem de execução ou o que significa ORDER BY 1.

  • Valores originais de a: 1, 2, 4, 6
  • Cálculo 3*a:
    • Para a=1, 3*a = 3
    • Para a=2, 3*a = 6
    • Para a=4, 3*a = 12
    • Para a=6, 3*a = 18
  • Resultados intermediários da coluna x (3*a): 3, 6, 12, 18
  • ORDER BY 1: Significa ordenar pelo primeiro item da lista SELECT, que é 3*a (ou x). A ordenação padrão é ascendente.
    • A lista 3, 6, 12, 18 já está ordenada de forma ascendente.
  • TOP 2: Seleciona as duas primeiras linhas após a ordenação.
    • As duas primeiras linhas da lista ordenada 3, 6, 12, 18 são 3 e 6.

(A) Incorreta: Esta alternativa seria o resultado se o TOP 2 fosse aplicado à coluna a original (1, 2) e depois multiplicado por 3 (3, 6), mas o ORDER BY ainda afetaria a ordem. Ou se ORDER BY 1 fosse interpretado como ORDER BY a e depois TOP 2 fosse aplicado, resultando em a=1, a=2, e então 3*a fosse aplicado, resultando em 3, 6. No entanto, a ordem de execução do SQL é crucial: primeiro calcula 3*a, depois ordena 3*a, e só então aplica TOP 2.
(B) Correta: O comando primeiro calcula 3*a para todas as linhas (3, 6, 12, 18). Em seguida, ele ordena esses valores pelo primeiro item da lista SELECT (3*a), que já estão em ordem ascendente (3, 6, 12, 18). Finalmente, TOP 2 seleciona os dois primeiros valores dessa lista ordenada, que são 3 e 6.
(C) Incorreta: Esta alternativa não se alinha com a lógica da consulta. Se houvesse um ORDER BY a DESC e TOP 2 fosse aplicado a a (6, 4) e depois multiplicado por 3, teríamos 18 e 12.
(D) Incorreta: Esta seria a resposta se a ordenação fosse ORDER BY 3*a DESC (ou ORDER BY x DESC), resultando em (18, 12) e então TOP 2 selecionaria 18 e 12. Ou se houvesse algum erro na interpretação do ORDER BY 1 e TOP. Armadilha da banca: O distrator mais tentador, pois pode levar o aluno a pensar que o ORDER BY 1 se refere à coluna a original, ou que a multiplicação 3*a ocorre depois do TOP, ou que a ordem é decrescente. No entanto, ORDER BY 1 se refere à coluna 3*a (apelidada de x), e a ordem padrão é ascendente.
(E) Incorreta: Não há um caminho lógico para se chegar a esses valores com a consulta fornecida.

Fonte: FGV TJTO 2022 Técnico Judiciário - Informática (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho