Questão nº 40

Questão de Banco de Dados · FGV CGE-SC 2022 (nº 40)

FGV2022Auditor do Estado - Ciências da ComputaçãoBanco de Dados
Gabarito: Dver comentário ↓

Considere os clientes de uma loja cadastrados em um SGBDR Microsoft SQL Server, e a necessidade de sortear um cliente para receber um prêmio. O administrador resolve realizar o sorteio através de um código Transact-SQL (TSQL).
Dos códigos a seguir, identifique o que irá realizar o sorteio de forma imparcial.

Resposta comentada

Gabarito Alternativa D

Para sortear um item de forma imparcial em SQL Server, é preciso que cada item tenha a mesma chance de ser escolhido, o que se consegue embaralhando a ordem dos registros antes de selecionar o primeiro.

  • (A) Incorreta: Selecionar TOP 1 sem uma cláusula ORDER BY não garante imparcialidade, pois a ordem dos registros não é aleatória e pode depender da estrutura física da tabela ou de índices.
  • (B) Incorreta: A sintaxe select top NomeCliente está incorreta; a cláusula TOP espera um número ou percentual, não um nome de coluna.
  • (C) Incorreta: ORDER BY row_number() não garante uma ordem aleatória. ROW_NUMBER() atribui números sequenciais e, sem um ORDER BY dentro de sua cláusula OVER(), a ordem pode ser arbitrária, mas não aleatória para fins de sorteio.
  • (D) Correta: A função NEWID() gera um identificador único global (GUID) para cada linha. Ao usar ORDER BY NEWID(), as linhas são ordenadas de forma aleatória a cada execução, garantindo que TOP 1 selecione um cliente de forma imparcial.
  • (E) Incorreta: Esta alternativa filtra clientes que possuem nomes únicos (having count(*) = 1) e depois seleciona o TOP 1 sem qualquer critério de aleatoriedade, não realizando um sorteio imparcial.

Fonte: FGV CGE-SC 2022 Auditor do Estado - Ciências da Computação (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho