7-Day Rolling Sales by Product Category
SQL coding challenge · Difficulty: medium · +150 XP
Problem
For each row show a 7-day (7-row) rolling sum of sales per product category.
Tables
Table: category_sales
| category | sale_date | sales | | --- | --- | --- | | Books | 2024-01-01 | 40 | | Books | 2024-01-02 | 60 | | Books | 2024-01-03 | 80 | | Books | 2024-01-04 | 20 | | Books | 2024-01-05 | 100 | | Books | 2024-01-06 | 50 | | Books | 2024-01-07 | 70 | | Books | 2024-01-08 | 30 | | Toys | 2024-01-01 | 200 | | Toys | 2024-01-02 | 150 | | Toys | 2024-01-03 | 100 |
Expected Output
| category | sale_date | sales | rolling_7day_sum | | --- | --- | --- | --- | | Books | 2024-01-01 | 40 | 40 | | Books | 2024-01-02 | 60 | 100 | | Books | 2024-01-03 | 80 | 180 | | Books | 2024-01-04 | 20 | 200 | | Books | 2024-01-05 | 100 | 300 | | Books | 2024-01-06 | 50 | 350 | | Books | 2024-01-07 | 70 | 420 | | Books | 2024-01-08 | 30 | 410 | | Toys | 2024-01-01 | 200 | 200 | | Toys | 2024-01-02 | 150 | 350 | | Toys | 2024-01-03 | 100 | 450 |
- Return:
category,sale_date,sales,rolling_7day_sum - Sort by
category, sale_date - Function to use:
SUM() OVER (PARTITION BY category ORDER BY sale_date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)