purifCubquest - New and returning users per badge
    Updated 2024-10-07
    --new and returning users, either like below based on days, or based on badge_id
    --badge_id makes sense but isn't as accurate as users are free to claim badges in any order
    with activity as (
    select decoded_log['id'] as badge_id, decoded_log['to'] as minter from berachain.testnet.fact_decoded_event_logs
    where CONTRACT_ADDRESS=lower('0x886D2176D899796cD1AfFA07Eff07B9b2B80f1be')
    and decoded_log['from']=lower('0x0000000000000000000000000000000000000000')
    ),
    new_wallets AS (
    select first_badge as badge_id, count(minter) as new_users from (
    SELECT
    minter,
    MIN(badge_id) AS first_badge
    FROM activity
    GROUP BY 1
    )
    GROUP BY 1
    ),
    stats AS (
    SELECT
    decoded_log['id'] as badge_id, count( distinct decoded_log['to'] ) as unique_wallets
    FROM berachain.testnet.fact_decoded_event_logs
    where CONTRACT_ADDRESS=lower('0x886D2176D899796cD1AfFA07Eff07B9b2B80f1be')
    and decoded_log['from']=lower('0x0000000000000000000000000000000000000000')
    GROUP BY 1
    )
    select badge_id, new_users, returning_users,
    avg(new_users+returning_users) over (order by badge_id) as average_users,
    sum(new_users+returning_users) over (order by badge_id) as cum_users
    from (
    SELECT
    s.badge_id,
    COALESCE(new_users,0) AS new_users,
    unique_wallets-COALESCE(new_users,0) AS returning_users
    FROM stats s
    LEFT JOIN new_wallets nw on s.badge_id=nw.badge_id
    QueryRunArchived: QueryRun has been archived