简体   繁体   中英

How to create RUNNING TOTAL in this mysql query

select saleid, orderno, orderdate, 
    sum(purchaseprice+purchaseshipping+paypalfee+storefee) as totalcost, 
    customerpaid as totalrevenue, 
    (customerpaid - sum(purchaseprice+purchaseshipping+paypalfee+storefee)) as profit,
    ROUND((((customerpaid - sum(purchaseprice+purchaseshipping+paypalfee+storefee)) / customerpaid) * 100.00),2) as profitmargin
from tblsales 
group by orderno having " . $having . " 
order by $sort $order limit $offset,$rows

This query works fine. Is there a way to add running total profit field to this query that performs a running sum of profit already calculated in the query?

Just put it in a subquery and use variables:

select t.*,
       (@cumesum := @cumesum + profit) as runningprofit
from (select saleid, orderno, orderdate, 
             sum(purchaseprice+purchaseshipping+paypalfee+storefee) as totalcost, 
             customerpaid as totalrevenue, 
             (customerpaid - sum(purchaseprice+purchaseshipping+paypalfee+storefee)) as profit,
             ROUND((((customerpaid - sum(purchaseprice+purchaseshipping+paypalfee+storefee)) / customerpaid) * 100.00),2) as profitmargin
      from tblsales 
      group by orderno
      having " . $having . " 
     ) t cross join
     (select @cumesum := 0) vars
order by $sort $order
limit $offset, $rows;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM