Home > Net >  Cumulative (Running) Total in MySQL
Cumulative (Running) Total in MySQL

Time:11-12

I have this query for my database

SELECT FlightNumber, FlightTime FROM flight_log

which outputs the Flight Number and the Flight Time:

Flight Number FlightTime
1 3
2 5
3 2
4 4

I am wondering if there is a way to add a cumulative total to the end of that so I receive the output:

FlightNumber FlightTime CumulativeTotal
1 3 3
2 5 8
3 2 10
4 4 14

The columns are titled FlightNumber and FlightTime, and the table is called Flight_log. Help is greatly appreciated. Thanks

CodePudding user response:

On MySQL 8 , we can use SUM() as an analytic function:

SELECT FlightNumber, FlightTime,
       SUM(FlightTime) OVER (ORDER BY FlightNumber) AS CumulativeTotal
FROM flight_log
ORDER BY FlightNumber;

On earlier versions of MySQL, we can use a correlated subquery:

SELECT FlightNumber, FlightTime,
       (SELECT SUM(f2.FlightTime)
        FROM flight_log f2
        WHERE f2.FlightNumber <= f1.FlightNumber) AS CumulativeTotal
FROM flight_log f1
ORDER BY FlightNumber;
  • Related