FC ConcursosFC Concursos

Questão FC369482

ATENÇÃO: use a tabela relacional IPCA a seguir para responder à questão. Tabela IPCA indice ano mes 0,56 2023 12 0,28 2023 11 0,24 2023 10 . . . . . . . . . 0,2 2003 7 -0,15 2003 6

Linguagem SQL

FGV · 2024

ATENÇÃO: use a tabela relacional IPCA a seguir para responder à questão.

 

Tabela IPCA

indice

ano

mes

0,56

2023 12

0,28

2023 11

0,24

2023 10

. . .

. . .

. . .

0,2

2003 7

-0,15

2003 6

. . .

. . .

. . .

2,25

2003 1
2,1 2002 12
3,02 2002 11

. . .

. . .

. . .

0,57 2001 1

A instância da tabela contém os valores do índice IPCA para todos os meses dos anos de 2001 até 2023. Os valores pontilhados representam a continuidade mensal da série. Todas as colunas são numéricas, e não aceitam valores nulos.

 

No contexto da tabela IPCA apresentada, considere que ocorreu um acidente que fez com que diversas linhas dessa tabela tenham sido aleatoriamente deletadas, embora todos os índices dos meses de 2023 tenham permanecido intactos e nenhum dos anos tenha sido completamente deletado.

Analise as três versões de SQL que, pretensamente, poderiam recompor a tabela corretamente, inserindo os meses deletados com o valor nulo na coluna indice.

 

I. insert into IPCA(indice, ano, mes)

select NULL, a.ano, a.mes

from (select distinct ano, mes from IPCA) a

where not exists

       (select * from IPCA x

       where x.ano = a.ano

          and x.mes = a.mes)

 

II. insert into IPCA(indice, ano, mes)

select NULL, a.ano, b.mes

from (select distinct ano from IPCA) a,

       (select distinct mes from IPCA) b

where not exists

    (select * from IPCA x

    where x.ano = a.ano

        and x.mes = b.mes)

 

III. insert into IPCA(indice, ano, mes)

select NULL, a.ano, a.mes

from IPCA a

where a.ano * 100 + a.mes not in

        (select x.mes + x.ano * 100 from IPCA x)

 

A respeito da adequação desses comandos ao que se pretende, é correto concluir que

  1. nenhum seria adequado.
  2. somente I seria adequado.
  3. somente II seria adequado.
  4. somente III seria adequado.
  5. todos seriam adequados.
Mostrar resposta e comentário

Gabarito

Certo

Comentário do professor

A versão II é adequada porque gera o **produto cartesiano** entre os conjuntos de anos e de meses existentes, produzindo todas as combinações \(anos \times meses\) necessárias para recompor a série mensal.

Como os meses de 2023 permaneceram intactos, o subselect distinct mes traz os 12 meses; e, por hipótese, nenhum ano foi completamente deletado, então distinct ano contém todos os anos. Assim obtém‑se a grade completa de pares (ano, mes).

O filtro NOT EXISTS impede inserir pares já presentes, e o SELECT define indice como NULL apenas para as combinações faltantes, restaurando a estrutura temporal sem criar duplicatas.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo