Questão nº 55

Questão de Tecnologia da Informação · CESGRANRIO BB 01/2022 (nº 55)

CESGRANRIO2022Escriturário - Agente de TecnologiaTecnologia da Informação
Gabarito: Aver comentário ↓

O banco de dados de uma empresa que comercializa seguros pessoais possui as seguintes tabelas:

Pessoa (email, nome, unidadeFederativaNascimento, faixaEtaria)
UF (sigla, nome)
Faixa (nome, menorIdade, maiorIdade)

A coluna "unidadeFederativaNascimento" da tabela Pessoa é uma chave estrangeira que referencia a coluna "sigla" da tabela UF; a coluna "faixaEtaria" da tabela Pessoa é uma chave estrangeira que aponta para a coluna "nome" da tabela Faixa.

A tabela Faixa possui os seguintes dados:

Figura da questão de Tecnologia da Informação

Considere o seguinte comando:

SELECT COUNT(*)
FROM Pessoa P, Faixa F
WHERE P.faixaEtaria = F.nome
AND P.unidadeFederativaNascimento = 'RJ'
AND F.maiorIdade <= 19

Esse comando SQL

Resposta comentada

Gabarito Alternativa A

Conceito-chave: A consulta faz um JOIN implícito (vírgula) entre as tabelas Pessoa e Faixa, ligando-as pela chave estrangeira faixaEtaria = nome. Depois, filtra apenas pessoas do RJ (unidadeFederativaNascimento = 'RJ') e faixas cujo limite superior (maiorIdade) seja até 19 anos. O COUNT(*) conta quantas linhas resultam dessa combinação, ou seja, quantas pessoas do RJ pertencem a alguma faixa etária com maiorIdade <= 19 (jovens).

  • (A) Correta: O comando conta quantas pessoas da tabela Pessoa nasceram no RJ e estão em uma faixa etária cujo maiorIdade é ≤ 19, ou seja, são jovens — exatamente o que a alternativa descreve.
  • (B) Incorreta: O comando retorna apenas um número (COUNT(*)), não seleciona colunas como nome ou email; portanto, não apresenta nome e email.
  • (C) Incorreta: Não há GROUP BY no comando, então não há agrupamento por faixa etária; o COUNT(*) conta linhas, não grupos.
  • (D) Incorreta: A consulta usa JOIN (produto cartesiano filtrado) e não uma operação de UNION entre comandos; são conceitos diferentes.
  • (E) Incorreta: Não há GROUP BY por UF; o filtro é apenas para 'RJ', e o COUNT(*) conta pessoas, não grupos.

Armadilha da banca (no distrator mais tentador, a letra A): A pegadinha está em achar que o COUNT(*) conta "pessoas" diretamente, mas o JOIN com Faixa pode gerar linhas duplicadas se uma pessoa se encaixar em mais de uma faixa com maiorIdade <= 19. No entanto, pelos dados da tabela Faixa (que não foram mostrados na imagem, mas o gabarito assume que há apenas uma faixa com maiorIdade <= 19, como "Jovem" com maiorIdade = 19), o COUNT(*) conta corretamente cada pessoa uma única vez. A banca quer que você perceba que o COUNT(*) conta linhas resultantes do JOIN, e não pessoas únicas — mas, nesse caso específico, como a faixa é única, o resultado é o número de pessoas jovens do RJ. Se houvesse duas faixas com maiorIdade <= 19, o COUNT(*) contaria a mesma pessoa duas vezes, e a alternativa A seria tecnicamente incorreta — mas o gabarito oficial valida A, então a interpretação é que a faixa é única.

Fonte: CESGRANRIO BB 01/2022 Escriturário - Agente de Tecnologia (Caderno Gabarito 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