Questão de Banco de Dados — SQL — FGV 2023
- Código
- fg070558
- Banca
- FGV
- Órgão
- SMF-RJ
- Ano
- 2023
- Nível
- Superior
- Cargo
- Fiscal de Rendas
- A9.000
- B9.110
- C9.900
- D9.991
- E10.000
GabaritoC — 9.900
Gabarito: letra C — 9.900 linhas. O comando SELECT n1.numero * n2.numero FROM N n1, N n2 WHERE n1.numero <> n2.numero realiza um produto cartesiano da tabela N (100 linhas) consigo mesma, gerando 100 × 100 = 10.000 combinações. A cláusula WHERE filtra os pares em que os números são diferentes, eliminando os 100 casos em que n1.numero = n2.numero. Portanto, o resultado tem 10.000 − 100 = 9.900 linhas.
A banca testa o entendimento de produto cartesiano em auto-junção e o impacto de uma condição simples de desigualdade. O cálculo é direto:
Total de combinações sem filtro: 100 × 100 = 10.000.
Pares excluídos (números iguais): 100 (um para cada número de 1 a 100).
Linhas resultantes: 10.000 − 100 = 9.900.
Este valor não corresponde a nenhuma operação direta. Talvez o candidato tenha subtraído 1.000 em vez de 100, ou multiplicado 100 × 90 (esquecendo que a segunda tabela também tem 100 linhas).
Número sem relação com o cálculo correto. Não há justificativa lógica para esse valor nas operações do comando.
Conforme demonstrado: 10.000 − 100 = 9.900 linhas.
Muito próximo de 10.000, poderia ser o resultado se apenas uma linha fosse excluída (por exemplo, se a condição fosse = em vez de <>), mas não é o caso.
Esse seria o total sem a cláusula WHERE (produto cartesiano puro). O filtro <> reduz em 100 linhas.
Em questões de produto cartesiano com auto-junção, lembre-se de contar tanto as linhas da tabela original quanto o número de pares que a condição elimina. Aqui, a condição <> remove exatamente uma linha para cada valor (o par consigo mesmo), ou seja, 100 eliminações.
Gabarito: letra C — 9.900.
Link permanente: /questoes/fg070558