← Questões de Banco de Dados

Banco de Dados · FGV · 2022

Questão comentada de Banco de Dados

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:

Gabarito: B

Essa questão mistura duas ideias que caem muito em SQL: o uso de TOP para limitar linhas e o ORDER BY para definir quais linhas entram nesse recorte. No SQL Server, quando você escreve `select top 2 3*a x from T order by 1`, você está pedindo: calcule `3*a`, ordene pelo primeiro item da lista de seleção e depois traga só as 2 primeiras linhas. Aqui, como a coluna `a` vale 1, 2, 4 e 6, a expressão `3*a` gera 3, 6, 12 e 18. Ordenando em ordem crescente, ficam 3, 6, 12 e 18. Como o `TOP 2` pega apenas as duas primeiras após a ordenação, o resultado mostra 3 e 6. Repare que o `order by 1` não é a linha 1 da tabela, nem a coluna `a`: ele se refere ao primeiro item do `select`, isto é, `3*a`. Essa é uma pegadinha clássica de prova, especialmente em bancas como a FGV, que adoram testar se você confunde a posição no select com posição na tabela. Em resumo: calculou a expressão, ordenou pelo resultado da expressão e limitou a duas linhas. Por isso o gabarito B está correto.

Continue treinando

Questões relacionadas