[英]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.