WITH windowed AS (
SELECT
r.product_asset_class AS asset_class,
s.token_id,
MIN_BY(s.supply_usd, s.day) AS supply_start,
MAX_BY(s.supply_usd, s.day) AS supply_end
FROM rwa_multichain.supply AS s
INNER JOIN rwa_multichain.tokens_reference_data AS r
ON r.blockchain = s.blockchain
AND r.token_id = s.token_id
WHERE s.day >= CURRENT_DATE - INTERVAL '30' DAY
GROUP BY 1, 2
)
SELECT
asset_class,
SUM(supply_start) AS supply_usd_30d_ago,
SUM(supply_end) AS supply_usd_now,
SUM(supply_end) - SUM(supply_start) AS net_change_usd
FROM windowed
GROUP BY 1
ORDER BY 4 DESC NULLS LAST