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;