Questão FC369476
ATENÇÃO: use a tabela relacional IPCA a seguir para responder à próxima questão. Tabela IPCA indice ano mês 0,56 2023 12 0,28 2023 11 0,24 2023 10 . . . . . . . . . 0,2 2003 7 -0,1
Linguagem SQL
FGV · 2024
ATENÇÃO: use a tabela relacional IPCA a seguir para responder à próxima questão.
Tabela IPCA
| indice |
ano | mês |
| 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.
Considere que um erro de programa na manipulação da tabela IPCA apresentada produziu a inserção de registros duplicados, de modo que algumas linhas da tabela ficaram com valores idênticos em suas colunas.
Analise as alternativas SQL que foram consideradas para a remoção das linhas redundantes.
I. Utilizar o comando delete com a cláusula except one.
II. Utilizar o comando delete incluindo a cláusula exists, o que faria com que a última linha de cada grupo de repetições não seria removida uma vez que não mais existiria uma outra linha idêntica.
III. Introduzir, temporariamente, uma nova coluna na tabela, com valores gerados por meio de um mecanismo de auto increment, ou sequence, e utilizar o uso do comando delete incluindo a cláusula exists.
Em relação a essas alternativas, é correto afirmar que
- nenhuma funcionaria.
- todas funcionariam.
- somente I funcionaria.
- somente II funcionaria.
- somente III funcionaria.
Mostrar resposta e comentário
Gabarito
Errado
Comentário do professor
Ao adicionar uma coluna com auto increment (ou preencher por sequence) criamos uma chave sintética que torna cada linha distinguível, mesmo quando os demais valores são idênticos.
Com esse identificador único é possível aplicar um comando de remoção baseado em EXISTS, por exemplo:
DELETE FROM ipca t1 WHERE EXISTS (SELECT 1 FROM ipca t2 WHERE t2.indice = t1.indice AND t2.ano = t1.ano AND t2.mes = t1.mes AND t2.seq < t1.seq);
Dessa forma, para cada grupo de registros iguais, apenas a linha com menor (ou maior) seq é preservada, garantindo a eliminação das duplicatas sem ambiguidade.
Ao final, a coluna temporária pode ser removida, restabelecendo a estrutura original da tabela.
Conteúdo do catálogo FC Concursos · Atualizado em