Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FGV 2024

Banco de DadosSQL
Código
fg100802
Banca
FGV
Órgão
TRF - 1ª REGIÃO
Ano
2024
Nível
Superior
Cargo
Analista Judiciário - Área Apoio Especializado - Especialidade: Análise de Dados
Considere uma tabela relacional T, com uma única coluna intitulada número, cuja instância de 10 linhas contém os números inteiros de 1 até 10, um em cada linha, sem repetição.Nessas condições, foram executados os três comandos SQL exibidos a seguir.select x.número * y.número A from T x, T y where y.número = x.número order by 1 select x.número * x.número A from T x order by 1 select distinct x.número * x.número A from T x O número de linhas produzidas em cada comando, na ordem e sem contar a linha de títulos, é:
  1. A1, 10, 10;
  2. B10, 10, 10;
  3. C10, 100, 10;
  4. D100, 10, 1;
  5. E100, 10, 10.
Revelar gabarito e comentário

GabaritoB — 10, 10, 10;

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

SQL: Produto Cartesiano e Auto-Junção

Gabarito: letra B. O primeiro comando realiza uma auto-junção com condição de igualdade, resultando em 10 linhas (um para cada número de 1 a 10). O segundo e o terceiro comandos selecionam os quadrados de cada número sem filtro, ambos retornando 10 linhas (o DISTINCT não altera pois os quadrados são únicos). Portanto, a sequência é 10, 10, 10.

A questão testa o entendimento de produto cartesiano implícito (vírgula no FROM) e o efeito do WHERE em uma auto-junção. Vamos detalhar cada comando.

1º comando

select x.número * y.número A
 from T x, T y
 where y.número = x.número
 order by 1
  • FROM T x, T y gera o produto cartesiano de T consigo mesma: 10 × 10 = 100 linhas.

  • WHERE y.número = x.número filtra apenas as combinações onde o número de x é igual ao de y. Isso ocorre uma vez para cada valor (1 a 10), resultando em 10 linhas.

  • O SELECT calcula x.número * y.número, ou seja, o quadrado de cada número.

  • Resultado: 10 linhas.

2º comando

select x.número * x.número A
 from T x
 order by 1
  • Sem produto cartesiano, seleciona diretamente as 10 linhas da tabela T.

  • Cada linha produz o quadrado do número.

  • Resultado: 10 linhas.

3º comando

select distinct x.número * x.número A
 from T x
  • Igual ao segundo, mas com DISTINCT.

  • Como os quadrados de 1 a 10 são todos distintos (1, 4, 9, ..., 100), o DISTINCT não elimina nenhuma linha.

  • Resultado: 10 linhas.

Conclusão

A sequência correta de linhas é 10, 10, 10, correspondente à alternativa B.

  1. 11º: auto-junção com WHERE10 linhas
  2. 22º: quadrado direto10 linhas
  3. 33º: DISTINCT (quadrados únicos)10 linhas
LEVEL · soulevel.com.br
NÃO CAIA NESSA!

Muitos candidatos confundem o primeiro comando com um produto cartesiano sem filtro, pensando em 100 linhas. No entanto, a condição y.número = x.número transforma o produto em uma auto-junção que retorna apenas uma linha por valor, resultando em 10 linhas — exatamente como nos outros comandos. O DISTINCT no terceiro comando não faz diferença pois os quadrados já são únicos. Fique atento: sempre verifique as condições do WHERE!

Gabarito: letra B.

Link permanente: /questoes/fg100802