RETENTION_DAY | AVG_RETENTION_RATE | |
---|---|---|
1 | 0 | 100 |
2 | 1 | 8.02933333 |
3 | 2 | 3.74965517 |
4 | 3 | 2.74285714 |
5 | 4 | 1.30740741 |
6 | 5 | 1.40384615 |
7 | 6 | 1.3252 |
8 | 7 | 2.20458333 |
9 | 8 | 1.98869565 |
10 | 9 | 1.15 |
11 | 10 | 0.99 |
12 | 11 | 0.8955 |
13 | 12 | 0.98421053 |
14 | 13 | 0.92666667 |
15 | 14 | 0.94470588 |
16 | 15 | 0.87375 |
17 | 16 | 1.21066667 |
18 | 17 | 2.93642857 |
19 | 18 | 1.31153846 |
20 | 19 | 1.58333333 |
adriaparcerisasflow users interval retention
Updated 2025-04-28
99
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
›
⌄
WITH user_activity AS (
-- First get all user activity from both chains with daily granularity
SELECT
CAST(value AS VARCHAR) AS user_address,
DATE_TRUNC('day', b.block_timestamp) AS activity_day
FROM
flow.core.ez_transaction_actors AS b,
LATERAL FLATTEN(INPUT => b.actors) AS a
WHERE
block_timestamp >= DATEADD(month, -4, CURRENT_DATE)
UNION ALL
SELECT
from_address AS user_address,
DATE_TRUNC('day', block_timestamp) AS activity_day
FROM
flow.core_evm.fact_transactions
WHERE
block_timestamp >= DATEADD(month, -4, CURRENT_DATE)
),
user_first_day AS (
-- Get each user's first day of activity
SELECT
user_address,
MIN(activity_day) AS first_activity_day
FROM user_activity
GROUP BY 1
),
base_cohort_size AS (
SELECT
first_activity_day,
COUNT(DISTINCT user_address) as cohort_size
FROM user_first_day
Last run: 25 days ago
31
422B
7s