FGV — Analista Legislativo - Informática Legislativa — Consultas SQL — 2023

Enunciado

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, 1024 Entretanto, 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, 1024 os intervalos de potências ausentes seriam o que seguem. 3-3 6-7 9-9 Assumindo 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.

Alternativas

  1. A)

    select log(t1.N + 1,2), log(t2.N -1, 2) from TT t1, TT t2 where log(t1.N, 2) + 1 tt.N) order by 1

  2. B)

    select log(t1.N,2) +1, log(t2.N, 2) -1 from TT t1, TT t2 where log(t1.N, 2) + 1 tt.N and t2.N < tt.N) order by 1

  3. C)

    select log(t1.N,2), log(t2.N, 2) -1 from TT t1, TT t2 where log(t1.N, 2) + 1 tt.N) order by 1

  4. D)

    select log(t1.N,2) +1, log(t2.N, 2) from TT t1, TT t2 where t1.N tt.N and t1.N < tt.N) order by 1

  5. E)

    select log(t1.N,2) +1, log(t2.N, 2) -1 from TT t1, TT t2 where log(t1.N, 2) + 1 tt.N) order by 1

Gabarito e comentário

Resposta correta: E

A consulta identifica pares consecutivos de valores existentes com diferença maior que um entre os expoentes. Not exists elimina pares com elementos intermediários, e os limites delimitam as potências ausentes.

Questões relacionadas