feyikemi2024-07-23 01:06 AM
    Updated 2024-07-23
    WITH transactions AS (
    SELECT
    block_timestamp,
    tx_signer AS user
    FROM near.core.fact_transactions
    WHERE TX_SUCCEEDED = TRUE
    UNION
    SELECT
    block_timestamp,
    tx_receiver AS user
    FROM near.core.fact_transactions
    WHERE TX_SUCCEEDED = TRUE
    ),

    first_transaction AS (
    SELECT
    MIN(block_timestamp) AS first_tx_time,
    user
    FROM transactions
    GROUP BY user
    ),

    previous_users AS (
    SELECT
    DISTINCT user
    FROM first_transaction
    WHERE first_tx_time::date < CURRENT_DATE - INTERVAL '30 DAY'
    ),

    new_and_returning_users AS (
    SELECT
    DATE_TRUNC('day', block_timestamp) AS day,
    CASE
    WHEN tx_signer IN (SELECT user FROM previous_users) THEN 'Returning Users'
    ELSE 'New Users'
    END AS user_type,
    QueryRunArchived: QueryRun has been archived