LAG: Calculate Day-Over-Day Sales Change

SQL coding challenge · Difficulty: easy · +50 XP

Problem

The growth team's daily digest shows raw sales AND how much it changed from the previous day — positive = growth, negative = decline.

Tables

Table: daily_sales

| sale_id | day_name  | amount |
| 1       | Monday    | 1000   |
| 2       | Tuesday   | 1500   |
| 3       | Wednesday | 800    |
| 4       | Thursday  | 1200   |

Expected Output

| sale_id | day_name  | amount | prev_amount | day_over_day_change |
| 1       | Monday    | 1000   | NULL        | NULL                |
| 2       | Tuesday   | 1500   | 1000        | 500                 |
| 3       | Wednesday | 800    | 1500        | -700                |
| 4       | Thursday  | 1200   | 800         | 400                 |
  • Return: sale_id, day_name, amount, prev_amount, day_over_day_change
  • day_over_day_change = amount - prev_amount
  • First row → NULL for both prev_amount and change
  • Sort by sale_id ascending

Solve this challenge on PySpark.in