Considere a tabela teste, com uma coluna apenas, intitulada ...

Próximas questões
Com base no mesmo assunto
Q914454 Banco de Dados
Considere a tabela teste, com uma coluna apenas, intitulada numero, contendo sete registros, com os números 1, 2, 3, 3, 4, 4, 5, um em cada linha. Considere ainda que os quatro comandos SQL, a seguir, tenham sido executados, em bloco, no MS SQL Server ou no Oracle,
select distinct * from teste; select * from teste union select * from teste; select distinct numero from teste; select numero from teste group by numero;
Desconsiderando eventuais inversões na ordem em que os valores são apresentados, assinale a conclusão correta com relação à equivalência dos resultados dessa execução.
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: E - Todos apresentam o mesmo resultado.

Para resolver essa questão, é necessário compreender como os operadores DISTINCT e UNION, além do comando GROUP BY, funcionam em SQL. Eles são usados para eliminar linhas duplicadas em um conjunto de resultados ou em duas tabelas unidas.

O DISTINCT é utilizado para retornar apenas valores distintos. No contexto da questão, o comando SELECT DISTINCT * FROM teste; irá retornar todos os números distintos presentes na tabela, ou seja, 1, 2, 3, 4 e 5.

O operador UNION combina os resultados de dois ou mais SELECT comandos em um único conjunto de resultados, eliminando linhas duplicadas por padrão. Então, o comando SELECT * FROM teste UNION SELECT * FROM teste; retornará o mesmo conjunto de números únicos 1, 2, 3, 4 e 5.

Quando usamos DISTINCT em uma única coluna, como em SELECT DISTINCT numero FROM teste;, o resultado será também os números sem repetição: 1, 2, 3, 4 e 5.

O último comando, SELECT numero FROM teste GROUP BY numero;, é frequentemente utilizado em operações de agregação, mas, neste caso, sem funções agregadas, o efeito é simplificar o resultado para grupos de números unique, assim como o DISTINCT faz.

Por que a alternativa E está correta? Todas as instruções SQL apresentadas na questão têm como objetivo retornar valores únicos da coluna numero. Embora sejam comandos diferentes com propósitos normalmente distintos, no contexto do problema dado, todos resultam no mesmo conjunto de números únicos: 1, 2, 3, 4 e 5, independentemente de possíveis inversões na ordem de apresentação dos valores.

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

Pegadinha malandra na questão, mas vamos nessa..

1) //select distinct /* from teste

            Como o distinct retira repetições, o resultado do sql será 1,2,3,4,5

2)//select * from teste unio/n/ select * from teste;

            O union por sua vez, TAMBÉM elimina repetições, ou seja, será retornado 1,2,3,4,5

3) //select distinct numer//o from teste;

           Exatamente como o 1º select, o distinct elimina repetições, resultado: 1,2,3,4,5

Aqui vem a pegadinha, a meu ver é claro!

4) //select numero from// teste group by numero;

            O select irá agrupar pela coluna numero, e com isso IRÁ ELIMINAR AS  REPETIÇÕES, pois em vez de aparecer 1,2,3,3,4,4,5 ( resultado sem o group by), após o group by teremos 1,2,3,4,5

 

GABARITO LETRA E, todas apresentam o mesmo resultado (1,2,3,4,5)

Obs.: Por favor ignore as barras no meio dos comandos sql, mas somente assim o site deixou eu publicar o comentário

http://sqlfiddle.com/#!9/43168d/5

Uma das avaliações feitas na questão é sobre o conhecimento da clausula UNION.

UNION: realiza distinct

UNION ALL: não realiza distinct

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo