Questão FC369481
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, o comando SQL a seguir produz o índice acumulado a cada ano, que é obtido pela multiplicação acumulativa de um conjunto de termos da forma (1 + i/100), onde i é o valor do índice em cada um dos doze meses de cada ano.
select
Y.ano,
(1+ m1.indice/100) * (1+ m2.indice/100) *
(1+ m3.indice/100) * (1+ m4.indice/100) *
(1+ m5.indice/100) * (1+ m6.indice/100) *
(1+ m7.indice/100) * (1+ m8.indice/100) *
(1+ m9.indice/100) * (1+ m10.indice/100) *
(1+ m11.indice/100) * (1+ m12.indice/100) índice
from IPCA m1, IPCA m2, IPCA m3, IPCA m4,
IPCA m5, IPCA m6, IPCA m7, IPCA m8,
IPCA m9, IPCA m10, IPCA m11, IPCA m12,
. . . . . . . . Y
where
m12.mes =12 and m11.mes=11 and m10.mes=10
and m9.mes =9 and m8.mes =8 and m7.mes=7
and m6.mes =6 and m5.mes =5 and m4.mes=4
and m3.mes =3 and m2.mes =2 and m1.mes=1
and m12.ano = m11.ano and m11.ano = m10.ano
and m10.ano = m9.ano and m9.ano = m8.ano
and m8.ano = m7.ano and m7.ano = m6.ano
and m6.ano = m5.ano and m5.ano = m4.ano
and m4.ano = m3.ano and m3.ano = m2.ano
and m2.ano = m1.ano
and m1.ano = Y.ano
order by 1
Assinale o trecho que deve substituir o trecho pontilhado do comando acima, de modo que o cálculo e a apresentação sejam produzidos corretamente.
- (select ano - 2021 as ano from IPCA)
- (select ano from IPCA)
- (select distinct ano from IPCA)
- (select distinct ano, mes from IPCA)
- select distinct ano from IPCA
Mostrar resposta e comentário
Gabarito
Certo
Comentário do professor
A escolha (select distinct ano from IPCA) funciona como a subconsulta que gera a lista de valores únicos de ano (por exemplo, 2001–2023) para a variável alias Y.
Com isso, cada linha resultante de Y representa um ano apenas uma vez, permitindo que as condições do WHERE (por exemplo, m1.ano = Y.ano) associem corretamente os doze aliases m1..m12 aos meses daquele ano.
Sem o distinct haveria múltiplas repetições de um mesmo ano (uma por mês), o que geraria combinações indesejadas. A subconsulta evita esse efeito e torna o agrupamento por ano explícito.
Assim a expressão calculada corresponde ao índice acumulado anual \( \prod_{m=1}^{12}\big(1 + i_m/100\big) \), avaliada para cada ano retornado pela subconsulta.
Conteúdo do catálogo FC Concursos · Atualizado em