Month-to-Date (MTD) Rolling Sum

SQL coding challenge · Difficulty: medium · +200 XP

Problem

Show a Month-to-Date (MTD) running total of sales that resets at the start of every month.

Tables

Table: daily_sales

| sale_date | sales |
| --- | --- |
| 2024-01-30 | 100 |
| 2024-01-31 | 200 |
| 2024-02-01 | 50 |
| 2024-02-02 | 150 |
| 2024-02-03 | 300 |
| 2024-03-01 | 400 |

Expected Output

| sale_date | sales | mtd_total |
| --- | --- | --- |
| 2024-01-30 | 100 | 100 |
| 2024-01-31 | 200 | 300 |
| 2024-02-01 | 50 | 50 |
| 2024-02-02 | 150 | 200 |
| 2024-02-03 | 300 | 500 |
| 2024-03-01 | 400 | 400 |
  • Return: sale_date, sales, mtd_total
  • Sort by sale_date ascending
  • Function to use: SUM() OVER (PARTITION BY YEAR(sale_date), MONTH(sale_date) ORDER BY sale_date)

Solve this challenge on PySpark.in