Pular para o conteúdo principal

Questão de Banco de Dados — Banco de Dados — FGV 2023

Banco de DadosBanco de Dados
Código
fg061593
Banca
FGV
Órgão
Câmara dos Deputados
Ano
2023
Nível
Superior
Cargo
Analista Legislativo - Informática Legislativa - Tarde
Considere uma tabela relacional TT, com uma única coluna, N, que deveria conter números inteiros positivos, sem repetição, correspondentes a um conjunto de potências de 2, calculadas a partir de um expoente inteiro x, que vai sendo incrementado continuamente, de 1 em 1, como a seguir.2, 4, 8, 16, 32, 64, 128, 256, 512, 1024Entretanto, há falhas na sequência natural das potências, e é preciso descobrir as que estão ausentes na numeração. Por exemplo, se a coluna N contivesse apenas os números.4, 16, 32, 256, 1024os intervalos de potências ausentes seriam o que seguem.3-3 6-7 9-9Assumindo que a função log(N, 2) retorna x, tal que 2x = N, assinale o comando SQL que produz esses intervalos para qualquer instância da tabela TT construída nesses moldes.
  1. AImagem associada para resolução da questão
  2. BImagem associada para resolução da questão
  3. CImagem associada para resolução da questão
  4. DImagem associada para resolução da questão
  5. EImagem associada para resolução da questão
Revelar gabarito e comentário

GabaritoE — [imagem]

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”.

Identificação de intervalos de expoentes ausentes em potências de 2

Gabarito: letra E (conforme gabarito oficial). A questão pede um comando SQL que, dada uma tabela TT com uma coluna N contendo potências de 2 (com lacunas), retorne os intervalos de expoentes ausentes. O exemplo mostra que se a tabela tiver {4,16,32,256,1024} (expoentes 2,4,5,8,10), os intervalos de expoentes faltantes são [3,3], [6,7], [9,9].

A solução envolve: (1) gerar a sequência completa de expoentes desde o mínimo (1) até o máximo presente na tabela; (2) identificar os expoentes que não estão na tabela (usando um LEFT JOIN com a tabela de expoentes existentes); (3) agrupar expoentes consecutivos em intervalos, usando a técnica de "islands" com ROW_NUMBER().

O comando correto (alternativa E) provavelmente utiliza uma CTE recursiva (ou uma tabela de números) para gerar a sequência de expoentes, e depois aplica a lógica de agrupamento. Como as alternativas são imagens e não foram transcritas, não é possível analisar cada uma individualmente, mas o gabarito oficial indica que apenas a alternativa E implementa corretamente essa lógica.

PEGA ESSA DICA!

Para resolver problemas de lacunas numéricas em SQL, use uma CTE (ou tabela de números) para gerar todos os valores possíveis e depois um LEFT JOIN com os dados existentes. Para agrupar consecutivos, calcule uma diferença entre o valor e um ROW_NUMBER() ordenado.

Gabarito: letra E

Link permanente: /questoes/fg061593