Questão nº 67

Questão de Tecnologia da Informação · FGV TRF1 2024 (nº 67)

FGV2024Analista Judiciário - Análise de DadosTecnologia da Informação
Gabarito: Bver comentário ↓

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, é:

Resposta comentada

Gabarito Alternativa B

Cardinalidade refere-se ao número de linhas em um conjunto de resultados de uma consulta SQL, que é determinado pelas cláusulas FROM, WHERE e DISTINCT. A cláusula FROM define as tabelas e como elas são combinadas (por exemplo, um produto cartesiano combina cada linha de uma tabela com cada linha de outra), WHERE filtra essas linhas, e DISTINCT remove linhas duplicadas do resultado final.

(A) Incorreta: A primeira consulta, embora comece com um produto cartesiano, é filtrada pela condição where y.número = x.número, resultando em 10 linhas, não 1.
(B) Correta:

  1. A primeira consulta (select x.número * y.número A from T x, T y where y.número = x.número) inicia com um produto cartesiano de T consigo mesma (10x10 = 100 combinações). No entanto, a cláusula WHERE y.número = x.número filtra essas 100 combinações para manter apenas aquelas em que o número de x é igual ao número de y. Como os números de 1 a 10 são únicos, isso resulta em 10 pares (1,1), (2,2), ..., (10,10), e, portanto, 10 linhas no resultado.
  2. A segunda consulta (select x.número * x.número A from T x) simplesmente processa cada uma das 10 linhas da tabela T, calculando o quadrado de cada número. Não há filtros ou operações que alterem o número de linhas, resultando em 10 linhas.
  3. A terceira consulta (select distinct x.número * x.número A from T x) também calcula o quadrado de cada um dos 10 números (1, 4, 9, ..., 100). Como todos esses resultados são valores distintos entre si, a palavra-chave DISTINCT não encontra nenhuma duplicata para remover, mantendo as 10 linhas originais.
    (C) Incorreta: A primeira consulta não retorna 100 linhas porque a cláusula WHERE reduz o produto cartesiano para 10 linhas.
    (D) Incorreta: A armadilha da banca aqui é que a primeira consulta não retorna 100 linhas devido ao WHERE, e a terceira consulta retorna 10 linhas, não 1, porque os quadrados dos números de 1 a 10 são todos distintos, então DISTINCT não remove nenhuma linha.
    (E) Incorreta: A primeira consulta não retorna 100 linhas; a cláusula WHERE a restringe a 10 linhas.

Fonte: FGV TRF1 2024 Analista Judiciário - Análise de Dados (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho