Running calculations appear frequently in interviews.
Running total:
SELECT date, amount,
SUM(amount) OVER (
ORDER BY date
ROWS UNBOUNDED PRECEDING
) as running_total
FROM transactions
Moving average (-day):
SELECT date, amount,
AVG(amount) OVER (
ORDER BY date
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
) as moving_avg
FROM daily_metrics
Know the frame clauses: ROWS vs RANGE, UNBOUNDED vs N PRECEDING.