SQL
Calculate Running Total in SQL without Window Functions
Learn to compute a cumulative sum or running total for a series of records using a self-join or correlated subquery, providing an alternative to window functions.
-- Calculate running total of sales for each product, ordered by date
SELECT
s1.sale_date,
s1.product_id,
s1.sale_amount,
(SELECT SUM(s2.sale_amount)
FROM sales s2
WHERE s2.product_id = s1.product_id
AND s2.sale_date <= s1.sale_date
) AS running_total
FROM
sales s1
ORDER BY
s1.product_id, s1.sale_date;
How it works: This snippet demonstrates how to calculate a running total or cumulative sum without using SQL window functions, which might not be available or optimal in all environments. It uses a correlated subquery that, for each row in the outer query, sums all previous sales amounts for the same product up to and including the current row's date. This technique allows you to track an accumulating value over a sorted set of data.