Example 1
Compute a rolling 3-sale sum for a salesperson's daily results
Day 1 has no preceding rows so the window contains only itself: 100. Day 2 looks back one row: 100+150=250. Day 3 looks back two rows: 100+150+200=450. Day 4 drops day 1 from the frame: 150+200+250=600. Day 5 drops day 2: 200+250+300=750. The frame slides forward by one row each time, keeping the window at most 3 rows wide.
CREATE TABLE sales (DAY INT, amount INT);
INSERT INTO
sales (DAY, amount)
VALUES
(1, 100),
(2, 150),
(3, 200),
(4, 250),
(5, 300);SELECT
DAY,
amount,
SUM(amount) OVER (
ORDER BY
DAY ROWS BETWEEN 2 PRECEDING
AND CURRENT ROW
) AS rolling_3
FROM
sales
ORDER BY
DAY;| day | amount | rolling_3 |
|---|---|---|
| 1 | 100 | 100 |
| 2 | 150 | 250 |
| 3 | 200 | 450 |
| 4 | 250 | 600 |
| 5 | 300 | 750 |
Output is identical across all engines.