Questão nº 39
Questão de Tecnologia da Informação · FGV MPGO Servidores 2022 (nº 39)
Nas três questões seguintes, considere uma tabela de banco de dados intitulada NUMBERS, com apenas uma coluna, numero, do tipo inteiro, cuja instância é mostrada a seguir.
Tomando por base a tabela NUMBERS, assinale o comando SQL que produz um resultado de 1.000 linhas, contendo os números de 1 até 1.000 em ordem crescente.
- A```sql
select (n1.numero -1) 100 +
(n2.numero -1) 10 +
(n3.numero -1) + 1 Numeracao
from NUMBERS n1, NUMBERS n2, NUMBERS n3
order by 1
``` (alternativa correta) - B```sql
select (n1.numero -1) 100 +
(n2.numero -1) 10 +
(n3.numero -1) Numeracao
from NUMBERS n1, NUMBERS n2, NUMBERS n3
order by 1
``` - C```sql
select (n1.numero) 100 +
(n2.numero) 10 +
(n3.numero) + 1 Numeracao
from NUMBERS n1, NUMBERS n2, NUMBERS n3
order by 1
``` - D```sql
select (n1.numero -1) 100 +
(n1.numero -1) 10 +
(n1.numero -1) + 1 Numeracao
from NUMBERS n1
order by 1
``` - E```sql
select (n1.numero) 100 +
(n2.numero) 10 +
(n3.numero) Numeracao
from NUMBERS n1, NUMBERS n2, NUMBERS n3
order by 1
```
Resposta comentada
Gabarito Alternativa A
Conceito-chave: Um produto cartesiano (junção sem condição WHERE) combina cada linha de uma tabela com todas as linhas dela mesma. Se a tabela NUMBERS tem 10 linhas (0 a 9), então NUMBERS n1, NUMBERS n2, NUMBERS n3 gera combinações. A fórmula da alternativa A usa essas combinações como dígitos de um número de 3 posições na base 10, somando 1 no final para deslocar o intervalo de 0–999 para 1–1.000.
- (A) Correta: Com
n1,n2,n3variando de 0 a 9 (poisnumeroé 0–9), a expressão gera exatamente os valores de 1 a 1.000, sem repetições e em ordem crescente, pois cada combinação única de(n1, n2, n3)produz um número único. - (B) Incorreta: Faltou o
+1no final, então o resultado varia de 0 a 999, não de 1 a 1.000 — a banca quer números de 1 até 1.000. - (C) Incorreta: Usa
n1.numero,n2.numero,n3.numerosem subtrair 1, então os valores vão de 1 a 10 em cada posição, gerando números de 111 a 1.111 (com saltos e repetições), não a sequência contínua de 1 a 1.000. - (D) Incorreta: Usa apenas
n1nas três posições, então o resultado é sempre um múltiplo de 111 (ex.: 1, 112, 223...), gerando apenas 10 linhas, não 1.000. - (E) Incorreta: Mesmo problema da C: sem subtrair 1, os dígitos vão de 1 a 10, produzindo valores de 111 a 1.110, sem cobrir o intervalo de 1 a 1.000 de forma contínua.
Armadilha do distrator mais tentador (B): A banca tenta fazer você esquecer o +1 final. A fórmula de A é um clássico para gerar sequências numéricas a partir de um produto cartesiano, e o +1 é o ajuste que converte o intervalo 0–999 em 1–1.000. Sem ele, você obtém 0–999, o que parece quase certo, mas falha no requisito explícito de "números de 1 até 1.000".
Fonte: FGV MPGO Servidores 2022 Analista em Informática (Caderno Tipo 1). Reproduzida para fins de estudo.
