No SQL Server, considere uma tabela T com quatro linhas, nas...

Próximas questões
Com base no mesmo assunto
Q1933763 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:
Alternativas

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