with contract_active_days as (
select
contract_address,
count(distinct date_trunc('day', block_timestamp)) as active_days
from flow.core_evm.fact_event_logs
where tx_succeeded
group by contract_address
)
select
case
when active_days > 180 then 'Long-Term Contracts'
when active_days between 30 and 180 then 'Mid-Term Contracts'
else 'Short-Term Contracts'
end as contract_category,
count(contract_address) as contract_count
from contract_active_days
group by contract_category