30-Day Rolling Sales Amount

SQL coding challenge · Difficulty: easy · +100 XP

Problem

Finance needs a 30-day rolling sum of sales (here: a running total over all available days).

Tables

Table: daily_sales

| sale_date | sales |
| --- | --- |
| 2024-01-01 | 100 |
| 2024-01-02 | 200 |
| 2024-01-03 | 150 |
| 2024-01-04 | 300 |
| 2024-01-05 | 250 |
| 2024-01-06 | 180 |
| 2024-01-07 | 220 |
| 2024-01-08 | 90 |
| 2024-01-09 | 310 |

Expected Output

| sale_date | sales | rolling_30day_sum |
| --- | --- | --- |
| 2024-01-01 | 100 | 100 |
| 2024-01-02 | 200 | 300 |
| 2024-01-03 | 150 | 450 |
| 2024-01-04 | 300 | 750 |
| 2024-01-05 | 250 | 1000 |
| 2024-01-06 | 180 | 1180 |
| 2024-01-07 | 220 | 1400 |
| 2024-01-08 | 90 | 1490 |
| 2024-01-09 | 310 | 1800 |
  • Return: sale_date, sales, rolling_30day_sum
  • Sort by sale_date ascending
  • Function to use: SUM() OVER (ORDER BY sale_date ROWS BETWEEN 29 PRECEDING AND CURRENT ROW)

Solve this challenge on PySpark.in