7-Day Rolling Sum of Positive Sales Only

SQL coding challenge · Difficulty: medium · +200 XP

Problem

Compute a 7-day (7-row) rolling sum of positive sales only — negative (refund) days count as 0.

Tables

Table: daily_sales

| sale_date | sales |
| --- | --- |
| 2024-01-01 | 100 |
| 2024-01-02 | -50 |
| 2024-01-03 | 200 |
| 2024-01-04 | -30 |
| 2024-01-05 | 150 |
| 2024-01-06 | 80 |
| 2024-01-07 | -20 |
| 2024-01-08 | 60 |

Expected Output

| sale_date | sales | rolling_7day_positive |
| --- | --- | --- |
| 2024-01-01 | 100 | 100 |
| 2024-01-02 | -50 | 100 |
| 2024-01-03 | 200 | 300 |
| 2024-01-04 | -30 | 300 |
| 2024-01-05 | 150 | 450 |
| 2024-01-06 | 80 | 530 |
| 2024-01-07 | -20 | 530 |
| 2024-01-08 | 60 | 490 |
  • Return: sale_date, sales, rolling_7day_positive
  • Sort by sale_date ascending
  • Function to use: SUM(CASE WHEN sales > 0 THEN sales ELSE 0 END) OVER (ORDER BY sale_date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)

Solve this challenge on PySpark.in