← Questões de Banco de Dados

Banco de Dados · FGV · 2023

Questão comentada de Banco de Dados

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.

Gabarito: D

Quando o enunciado fala em "sorteio imparcial" em SQL Server, a ideia é simples: todas as linhas da tabela precisam ter chance real de aparecer, sem favorecer a primeira, a última ou qualquer ordem já existente. Em T-SQL, isso normalmente é feito embaralhando o resultado antes de pegar um registro com TOP 1. O truque clássico no SQL Server é usar ORDER BY NEWID(). A função NEWID() gera um identificador único diferente para cada linha, e isso cria uma ordenação aleatória no conjunto. Depois, com TOP 1, você pega apenas um cliente dessa lista embaralhada. É uma solução muito usada em provas quando a palavra-chave é aleatoriedade. A alternativa D está correta exatamente por isso: SELECT TOP 1 ... FROM Cliente ORDER BY NEWID() faz o sorteio de forma imparcial, pois randomiza a ordem antes de escolher um único cliente. As demais opções ou não ordenam nada, ou usam sintaxe incorreta, ou tentam filtrar algo que não tem relação com sorteio. Em provas, vale guardar a dupla "TOP 1 + ORDER BY NEWID()" como sinônimo de seleção aleatória no SQL Server. É uma daquelas combinações que a banca adora cobrar como se fosse mágica de banco de dados, mas na prática é só embaralhar e pegar o primeiro.

Continue treinando

Questões relacionadas