Kruys-Collinsgleaming-silver
    Updated 2025-02-20
    WITH contract_addresses AS (
    -- Get all contract addresses
    SELECT DISTINCT address FROM monad.testnet.dim_contracts
    ),
    user_activity AS (
    -- Count transactions per user (EOAs only for senders and receivers)
    SELECT
    user_address,
    COUNT(*) AS tx_count
    FROM (
    SELECT from_address AS user_address FROM monad.testnet.fact_transactions
    WHERE block_timestamp >= '2025-02-19'
    UNION ALL
    SELECT to_address AS user_address FROM monad.testnet.fact_transactions
    WHERE block_timestamp >= '2025-02-19'
    ) tx
    LEFT JOIN contract_addresses c ON tx.user_address = c.address
    WHERE c.address IS NULL -- Ensure it's an EOA
    GROUP BY user_address
    )
    SELECT
    CASE
    WHEN tx_count = 1 THEN 'Single User'
    WHEN tx_count = 2 THEN 'Tried Twice'
    WHEN tx_count BETWEEN 3 AND 10 THEN 'Regular User(3-10)'
    WHEN tx_count BETWEEN 11 AND 50 THEN 'Active User(11-50)'
    WHEN tx_count BETWEEN 51 AND 100 THEN 'Very Active User(51-100)'
    ELSE 'Super User(>100)'
    END AS tx_activity_category,
    COUNT(*) AS user_count
    FROM user_activity
    GROUP BY tx_activity_category
    ORDER BY user_count DESC;

    Last run: 23 days ago
    TX_ACTIVITY_CATEGORY
    USER_COUNT
    1
    Single User224933
    2
    Regular User(3-10)148653
    3
    Tried Twice81594
    4
    Active User(11-50)70617
    5
    Very Active User(51-100)5773
    6
    Super User(>100)3567
    6
    165B
    2s