Um tribunal de contas implementou um data lake para auditoria contínua de contratos administrativos, utilizando ingestão incremental via CDC (change data capture). Os dados são armazenados na tabela contratos_cdc, que contém múltiplas versões de registros ao longo do tempo. A tabela contratos_cdc tem as colunas a seguir.
- id_contrato (identificador do contrato)
- valor (valor do contrato);
- status (situação do contrato);
- data_atualizacao (timestamp da alteração).
Um auditor do referido tribunal deseja realizar a seguinte consulta SQL.
SELECT id_contrato, valor, status
FROM (
SELECT *,
ROW_NUMBER() OVER (
PARTITION BY id_contrato
ORDER BY data_atualizacao DESC
) AS rn
FROM contratos_cdc
) t
WHERE rn = 1
A partir das informações apresentadas e do trecho de código SQL precedente, julgue os itens a seguir.
No que concerne à manipulação de dados em larga escala e à organização de consultas SQL, a utilização da CTE (common table expression) apresentada a seguir para encapsular a lógica de ranking é semanticamente equivalente à consulta SQL apresentada, pois ambas as abordagens produzem o mesmo resultado lógico ao isolar a versão mais recente de cada contrato, sob a premissa de que a coluna data_atualizacao permita uma ordenação unívoca para cada id_contrato.
WITH contratos_rankeados AS (
SELECT *,
ROW_NUMBER() OVER (
PARTITION BY id_contrato
ORDER BY data_atualizacao DESC
) AS rn
FROM contratos_cdc
)
SELECT id_contrato, valor, status
FROM contratos_rankeados
WHERE rn = 1