Exercise · SQL & Querying
Predict, then run it
Predict the output
sales(d, amt) = May-01 10, May-02 20, May-05 30 (May 3–4 missing). Trailing-3-day totals over a spine, so ROWS means days and quiet days appear:
WITH spine AS (SELECT g::DATE AS d FROM generate_series(DATE '2027-05-01', DATE '2027-05-05', INTERVAL 1 DAY) AS t(g)), daily AS (SELECT sp.d, COALESCE(SUM(s.amt), 0) AS amt FROM spine sp LEFT JOIN sales s ON s.d = sp.d GROUP BY sp.d) SELECT strftime(d, '%m-%d') AS day, SUM(amt) OVER (ORDER BY d ROWS 2 PRECEDING) AS roll FROM daily ORDER BY d;
Predict the exact output.