Level 4 - Mid-LevelOptimization Questions
Optimization: Window + Pre-Filter
Choose the better query for computing running spend of ACTIVE users only. Query A: SELECT user_id, txn_time, SUM(amount) OVER (PARTITION BY user_id ORDER BY txn_time) AS running_spend FROM transactions WHERE user_id IN (SELECT id FROM users WHERE status = 'ACTIVE'); Query B: WITH active_txn AS (SELECT t.user_id, t.txn_time, t.amount FROM transactions t JOIN users u ON t.user_id = u.id WHERE u.status = 'ACTIVE') SELECT user_id, txn_time, SUM(amount) OVER (PARTITION BY user_id ORDER BY txn_time) AS running_spend FROM active_txn;