Afonso_DiazRetention Rate
    Updated 2024-07-30
    with

    main as (
    select
    block_timestamp,
    tx_hash,
    origin_from_address as user,
    nvl(amount_in_usd, amount_out_usd) as amount_usd,
    tx_fee,
    iff(block_timestamp::date < '2024-03-14', 'Before fee changes', 'After fee changes') as timespan
    from arbitrum.defi.ez_dex_swaps
    join arbitrum.core.fact_transactions
    using (tx_hash, block_timestamp)
    where amount_usd <= 1e6
    and platform ilike 'uniswap%'
    ),

    user_activity AS (
    SELECT
    user,
    date_trunc('week', block_timestamp) AS date_start
    FROM main
    GROUP BY user, date_start
    )

    SELECT
    a.date_start AS start_date,
    iff(start_date < '2024-03-14', 'Before fee changes', 'After fee changes') as timespan,
    COUNT(DISTINCT a.user) AS active_users,
    COUNT(DISTINCT b.user) AS retained_users,
    (COUNT(DISTINCT b.user) * 100.0 / COUNT(DISTINCT a.user)) AS retention_rate
    FROM user_activity a
    LEFT JOIN user_activity b
    ON a.user = b.user
    AND a.date_start = b.date_start + INTERVAL '1 week'
    WHERE start_date >= '2023-12-01'
    QueryRunArchived: QueryRun has been archived