Bera TeamDaily Number 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
    ),

    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
    )

    SELECT
    uft.first_transaction_date AS signup_date,
    COUNT(DISTINCT CASE WHEN transaction_date = DATEADD(day, 1, uft.first_transaction_date) THEN From_address END) AS day_1_retention,
    COUNT(DISTINCT CASE WHEN transaction_date = DATEADD(day, 2, uft.first_transaction_date) THEN From_address END) AS day_2_retention,
    COUNT(DISTINCT CASE WHEN transaction_date = DATEADD(day, 3, uft.first_transaction_date) THEN From_address END) AS day_3_retention,
    COUNT(DISTINCT CASE WHEN transaction_date = DATEADD(day, 7, uft.first_transaction_date) THEN From_address END) AS day_7_retention,
    COUNT(DISTINCT CASE WHEN transaction_date = DATEADD(day, 14, uft.first_transaction_date) THEN From_address END) AS day_14_retention,
    COUNT(DISTINCT CASE WHEN transaction_date = DATEADD(day, 30, uft.first_transaction_date) THEN From_address END) AS day_30_retention
    FROM
    user_transactions uft
    GROUP BY
    uft.first_transaction_date
    QueryRunArchived: QueryRun has been archived