CREATE MATERIALIZED VIEW insights.asset_latest_price_mv AS
SELECT
asset_id,
adjusted_last_close_price AS price,
fact_date AS price_date,
CASE
WHEN prev_price IS NULL OR prev_price = 0
THEN NULL
ELSE (
adjusted_last_close_price - prev_price
) / prev_price
END AS price_change_pct_1d
FROM (
SELECT
asset_id,
fact_date,
adjusted_last_close_price,
prev_price,
ROW_NUMBER() OVER (PARTITION BY asset_id ORDER BY fact_date DESC) AS rn
FROM insights.asset_price_with_lag_mv AS asset_price_with_lag_mv_next
) AS ranked
WHERE
rn = 1