Home >Database >Mysql Tutorial >How to Calculate a Running Total of Daily Order Counts in MySQL?

How to Calculate a Running Total of Daily Order Counts in MySQL?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-22 06:41:16887browse

How to Calculate a Running Total of Daily Order Counts in MySQL?

MySQL Running Total Calculation: A Practical Example

Working with tabular data often requires calculating running totals for efficient analysis. This example demonstrates how to calculate a running total of daily order counts within MySQL. We start with a query that counts orders per day:

<code class="language-sql">SELECT DAYOFYEAR(`date`) AS d, COUNT(*) AS daily_count
FROM `orders`
WHERE `hasPaid` > 0
GROUP BY d
ORDER BY d</code>

This yields results similar to:

d daily_count
20 5
21 7
22 12
23 4

To add a running total column, we use a user variable:

<code class="language-sql">SET @running_total:=0;
SELECT
    q1.d,
    q1.daily_count,
    (@running_total := @running_total + q1.daily_count) AS running_total
FROM
    (SELECT
        DAYOFYEAR(`date`) AS d,
        COUNT(*) AS daily_count
    FROM `orders`
    WHERE `hasPaid` > 0
    GROUP BY d
    ORDER BY d) AS q1;</code>

This code initializes a variable @running_total to zero. The inner query (q1) selects the day and daily order count. The outer query then iterates through q1, adding each day's count to @running_total and storing the cumulative sum in the running_total column.

The output now includes the running total:

d daily_count running_total
20 5 5
21 7 12
22 12 24
23 4 28

This enhanced query provides a running total, simplifying data analysis and visualization.

The above is the detailed content of How to Calculate a Running Total of Daily Order Counts in MySQL?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn