Tobi_12024-06-15 09:51 AM
    Updated 2024-06-15
    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