SóProvas


ID
2743369
Banca
FGV
Órgão
MPE-AL
Ano
2018
Provas
Disciplina
Banco de Dados
Assuntos

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
Comentários
  • 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

  • As consultas possuem todas o mesmo resultado.

    SELECT DISTINCT * e SELECT DISTINCT numero retornam o mesmo resultado, pois * é um elemento que indica "todos os campos da tabela", mas a tabela só possui um campo - numero. Assim, ambas irão retorna a lista de valores distintos para numero.

    O comando UNION também elimina os valores repeitidos do resultado da consulta. Como o resultado tem somente uma coluna (numero), a consulta em questão também irá retornar todos os valores distintos de numero.

    Por fim, o GROUP BY numero também tem o mesmo efeito, já que agrupa todos os registros que tenham o mesmo valor do campo numero.