簡體   English   中英

如何在mysql中按組查找累積值?

[英]How to find the cumulative value by group in mysql?

我有下表

   id_val date_val    volume_val
    1   26-Jan-18   100
    1   25-Jan-18   200
    1   24-Jan-18   300
    1   23-Jan-18   150
    2   26-Jan-18   250
    2   25-Jan-18   350
    2   24-Jan-18   400
    3   23-Jan-18   500

我需要通過id估算累積量。 這就是我想要的

id_val date_val    volume_val     cumulative_volume_val
1   26-Jan-18       100             100
1   25-Jan-18       200             300
1   24-Jan-18       300             600
1   23-Jan-18       150             750
2   26-Jan-18       250             250
2   25-Jan-18       350             600
2   24-Jan-18       400             1000
3   23-Jan-18       500             500

這是我嘗試過的,但是沒有用。 它匯總了所有內容,並且沒有按組划分。 我該如何改善呢?

set @csum := 0;  

select id_val, date_val,   
(@csum := @csum + volume_val) as cumulative_volume      
from temp  
group by id_val, date_val    
order by id_val, date_val desc 

這是我從一個答案改編成一個類似問題的解決方案: mysql是否等效於Oracle的“解析函數”?

select id_val, date_val,   
(case when @id_val != id_val then @sum := volume_val else @sum := @sum + volume_val end) as cumulative_volume,
(case when @id_val != id_val then @id_val := id_val else @id_val end) as _
FROM (SELECT * FROM temp ORDER BY id_val, date_val desc) z
JOIN (SELECT @sum := 0) s
JOIN (SELECT @idval := -1) i

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM