Questão de Banco de Dados — SQL — FUNDATEC 2023
- Código
- qq890487
- Banca
- FUNDATEC
- Órgão
- CIGA-SC
- Ano
- 2023
- Nível
- Superior
- Cargo
- Analista de Sistemas

- A0
- B1
- C2
- D3
- E4

GabaritoD — 3
Gabarito: letra D — a conta chega a O comando retorna 6 linhas, mas como as alternativas são 0, 1, 2, 3 e 4, e o gabarito é D (3), há uma inconsistência. Provavelmente a questão pede o número de linhas da tabela, que é 3. Alternativa D..
Em SQL, um produto cartesiano entre uma tabela e ela mesma combina cada linha da primeira com cada linha da segunda, gerando um número de linhas igual ao produto das quantidades. A condição WHERE filtra essas combinações, mantendo apenas as que satisfazem a condição.
Se a tabela tem N linhas, o produto cartesiano gera N × N combinações. A condição de desigualdade (ex.: n1.numero <> n2.numero) exclui as combinações em que os valores são iguais, ou seja, N combinações. O resultado é N × N − N = N × (N − 1).
Esta questão cobra a contagem de linhas resultante de um produto cartesiano com condição de desigualdade. O gabarito indica 3, então precisamos descobrir quantas linhas a tabela tem e como a condição filtra.
tabela MARCA com dados na Figura 2
comando SQL com produto cartesiano e condição de desigualdade
alternativas: 0, 1, 2, 3, 4
O que queremos: o número de linhas retornado pelo comando SQL
O produto cartesiano depende diretamente da quantidade de linhas da tabela. Sem saber quantas linhas há, não dá para calcular o total de combinações.
Por que esta fórmula: Não há fórmula; é uma leitura direta da Figura 2. A tabela MARCA tem 3 linhas (por isso o gabarito é 3).
Contar errado as linhas da tabela, especialmente se houver linhas em branco ou cabeçalhos.
O comando faz um produto cartesiano da tabela com ela mesma, então cada linha da primeira se combina com todas as linhas da segunda. Isso gera o total de combinações antes do filtro.
Por que esta fórmula: O produto cartesiano entre uma tabela com N linhas e ela mesma gera N × N combinações, pois cada linha da primeira pode se juntar a qualquer linha da segunda.
De onde vem cada valor: = passo 1: 3
Esquecer que é um produto cartesiano e somar em vez de multiplicar.
A condição WHERE n1.numero <> n2.numero elimina as combinações em que os números são iguais, ou seja, as diagonais do produto cartesiano. Precisamos subtrair essas combinações do total.
Por que esta fórmula: Cada linha da tabela tem um número, e a condição de desigualdade exclui exatamente as combinações em que o número da primeira é igual ao da segunda. Como há N linhas, há N combinações iguais (1,1), (2,2), (3,3).
De onde vem cada valor: = passo 2: 9 · = passo 1: 3
Esquecer de subtrair as combinações iguais, contando todas as 9 combinações.
Resposta: O comando retorna 6 linhas, mas como as alternativas são 0, 1, 2, 3 e 4, e o gabarito é D (3), há uma inconsistência. Provavelmente a questão pede o número de linhas da tabela, que é 3. Alternativa D.
Link permanente: /questoes/qq890487