Considere a existência de uma tabela relacional N, com apenas uma coluna, intitulada numero, contendo os números inteiros de 1 até 100, um em cada linha, como ilustrada a seguir.
Como pode haver discrepâncias entre implementações da linguagem SQL, é dado que a função sqrt(x) retorna a raiz quadrada de x e que a expressão a % b retorna o resto da divisão inteira de a por b.
Analise o comando SQL a seguir, que faz referência à tabela N descrita anteriormente.
select n1.numero* n2.numero
from N n1, N n2
where n1.numero <> n2.numero
O número de linhas do resultado produzido pela execução desse comando, sem contar a linha de títulos, é:
A9.000
B9.110
C9.900
D9.991
E10.000
Revelar gabarito e comentário▾
GabaritoC — 9.900
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”.
Produto Cartesiano com Condição de Desigualdade em SQL
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.
Alternativa A — ❌ Incorreta (9.000)
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).
Alternativa B — ❌ Incorreta (9.110)
Número sem relação com o cálculo correto. Não há justificativa lógica para esse valor nas operações do comando.
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.
Alternativa E — ❌ Incorreta (10.000)
Esse seria o total sem a cláusula WHERE (produto cartesiano puro). O filtro <> reduz em 100 linhas.
PEGA ESSA DICA!
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.