Bera TeamShare of Users (Retention)
    Updated 2025-01-31
    -- Retention
    WITH user_first_transaction AS (
    SELECT
    From_address,
    MIN(DATE(block_timestamp)) AS first_transaction_date
    FROM
    berachain.testnet.fact_transactions
    GROUP BY
    From_address
    ),

    -- Step 2: Identify the subsequent transactions for each user
    user_transactions AS (
    SELECT
    t.From_address,
    DATE(t.block_timestamp) AS transaction_date,
    uft.first_transaction_date
    FROM
    berachain.testnet.fact_transactions t
    JOIN
    user_first_transaction uft
    ON
    t.From_address = uft.From_address
    )

    -- Step 3: Calculate retention counts
    SELECT
    'Day 1' AS retention_period,
    COUNT(DISTINCT CASE WHEN transaction_date = DATEADD(day, 1, first_transaction_date) THEN From_address END) AS retention_count
    FROM
    user_transactions
    UNION ALL
    SELECT
    'Day 2' AS retention_period,
    COUNT(DISTINCT CASE WHEN transaction_date = DATEADD(day, 2, first_transaction_date) THEN From_address END) AS retention_count
    FROM
    QueryRunArchived: QueryRun has been archived