with blocks as (
select
'Optimism' as network,
a.block_timestamp,
a.tx_count,
DATEDIFF('millisecond', a.block_timestamp, b.block_timestamp) as duration
from
optimism.core.fact_blocks a
join optimism.core.fact_blocks b on a.hash = b.parent_hash
where
a.tx_count > 0
)
select
network,
date(block_timestamp) as block_timestamp,
avg(duration) as avg_duration,
avg(tx_count) as avg_tx_count,
avg(avg_tx_count) over (partition by network order by date(block_timestamp) asc) as avg_tx_count_trend,
avg(avg_duration) over (partition by network order by date(block_timestamp) asc) as avg_duration_trend
from
blocks
group by
network, date(block_timestamp)
order by
network, date(block_timestamp)