WITH rowss AS
(
SELECT *, ROW_NUMBER() OVER (ORDER BY BLOCK_TIMESTAMP) AS rn
FROM polygon.core.fact_blocks
),
times AS (SELECT DATEDIFF(second, mc.BLOCK_TIMESTAMP, mp.BLOCK_TIMESTAMP) AS block_time
FROM rowss mc
JOIN rowss mp
ON mc.rn = mp.rn - 1)
select
max(block_time),
min(block_time),
avg(block_time)
from times