freshgeek2024-07-13 01:08 PM
    Updated 2024-07-13
    WITH user_activity AS (
    SELECT
    DATE_TRUNC('day', BLOCK_TIMESTAMP) AS day,
    BUYER_ADDRESS,
    ROW_NUMBER() OVER (PARTITION BY BUYER_ADDRESS ORDER BY BLOCK_TIMESTAMP) AS first_purchase_rank
    FROM
    avalanche.nft.ez_nft_sales
    WHERE
    BLOCK_TIMESTAMP >= DATEADD(day, -30, CURRENT_DATE)
    ),
    daily_users AS (
    SELECT
    day,
    COUNT(DISTINCT BUYER_ADDRESS) AS active_users,
    COUNT(DISTINCT CASE WHEN first_purchase_rank = 1 THEN BUYER_ADDRESS END) AS new_users
    FROM
    user_activity
    GROUP BY
    day
    ),
    cumulative_users AS (
    SELECT
    day,
    active_users,
    new_users,
    SUM(active_users) OVER (ORDER BY day) AS cumulative_active_users,
    SUM(new_users) OVER (ORDER BY day) AS cumulative_new_users
    FROM
    daily_users
    )
    SELECT
    day,
    active_users,
    new_users,
    cumulative_active_users,
    cumulative_new_users
    QueryRunArchived: QueryRun has been archived