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, é:
A1, 10, 10;
B10, 10, 10;
C10, 100, 10;
D100, 10, 1;
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.
11º: auto-junção com WHERE10 linhas
22º: quadrado direto10 linhas
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!