No SQL Server, considere uma tabela T com quatro linhas, nas...
O resultado produzido pela execução do comando
select top 2 3*a x from T order by 1
exibe, exatamente, os valores:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: B - 3 e 6.
Para solucionar esta questão, é necessário compreender como a cláusula SELECT TOP opera no SQL Server, juntamente com operações aritméticas básicas em colunas e a cláusula ORDER BY, que ordena os resultados de uma consulta.
A cláusula SELECT TOP é usada para especificar o número exato de registros a serem retornados. No caso apresentado, TOP 2
indica que apenas os dois primeiros registros da consulta ordenada devem ser exibidos.
Além disso, a questão envolve uma operação aritmética: 3*a
implica que cada valor da coluna a deve ser multiplicado por 3 antes de ser apresentado na saída. A saída é uma nova coluna chamada x.
Finalmente, o ORDER BY 1 significa que a ordenação dos resultados será feita pela primeira coluna do conjunto de resultados, que, neste caso, é a coluna derivada x (ou 3*a
).
Ao aplicar a operação 3*a
aos valores da coluna a, obtemos: 3, 6, 12 e 18. Quando ordenamos esses valores em ordem ascendente e selecionamos os dois primeiros com SELECT TOP 2
, temos 3 e 6 como resultado.
Portanto, a alternativa B está correta porque depois de multiplicar cada valor de a por 3 e ordenar esses produtos, os dois menores valores resultantes são 3 e 6, correspondendo exatamente aos dois primeiros registros que a consulta irá retornar.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Vamos entender as cláusulas do comando apresentado:
TOP 2: limita a seleção aos dois primeiros registros;
3 * a: seleciona os registros da coluna a, multiplicando-os por 3;
x: nomeia a coluna a * 3 como x (poderia ser escrito também como AS x);
ORDER BY 1: ordena os dados pela primeira coluna (no caso, a única coluna)
Assim, temos que são selecionados inicialmente os valores 3, 6, 12 e 18 (coluna a * 3). A cláusula ORDER BY 1 faz a ordenação pela primeira (e única) coluna, não alterando o resultado. A cláusula TOP 2 limita o resultado aos dois primeiros registros, ou seja, 3 e 6. Ao final, chegamos a:
x
3
6
GABARITO: B
b-
________
1
2
4
6
________
select top 2
1
2
________
3*a
1 * 3 = 3
2 * 3 = 6
________
x from T order by 1
significa ordenar por col 1
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo