Tobi_12024-06-15 09:51 AM
Updated 2024-06-15
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 active_users_counts AS (
SELECT
SENDER,
DATE_TRUNC('day', BLOCK_TIMESTAMP) AS transaction_date,
COUNT(*) AS transaction_count
FROM aptos.core.fact_transactions;
WHERE BLOCK_TIMESTAMP >= DATEADD(DAY, -60, CURRENT_TIMESTAMP)
GROUP BY SENDER, transaction_date
),
active_users_daily AS (
SELECT
transaction_date,
COUNT(DISTINCT SENDER) AS active_user_count
FROM active_users_counts
GROUP BY transaction_date
),
active_users_previous_week AS (
SELECT
a.transaction_date,
COUNT(DISTINCT a.SENDER) AS active_user_count_previous_week
FROM active_users_counts a
JOIN (
SELECT DISTINCT SENDER, DATE_TRUNC('day', DATEADD(WEEK, -1, CURRENT_TIMESTAMP)) AS previous_week_date
FROM aptos.core.fact_transactions
WHERE BLOCK_TIMESTAMP >= DATEADD(DAY, -60, CURRENT_TIMESTAMP)
AND BLOCK_TIMESTAMP < DATEADD(DAY, -7, CURRENT_TIMESTAMP)
) b ON a.SENDER = b.SENDER AND a.transaction_date = b.previous_week_date
GROUP BY a.transaction_date
)
SELECT
a.transaction_date,
a.active_user_count,
COALESCE(b.active_user_count_previous_week, 0) AS active_user_count_previous_week
FROM
active_users_daily a
LEFT JOIN
QueryRunArchived: QueryRun has been archived