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