2017-10-08 68 views
0

我有一個表格,其中完成的交易數量和交易持續時間是按持續時間分組的。如何累計顯示行數據

enter image description here

現在我想累積例如添加事務:在持續時間1個交易是圖2,在時間爲2個交易(2 + 4)= 6,持續時間5個交易(6 + 3)= 9。 請建議此

+0

下去。嘗試一下。如果你還在掙扎,請參閱https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-bea-a- very-simple-sql-query – Strawberry

+0

你至少應該向我們展示你的預期輸出,這對我來說是不清楚的。 –

回答

1

方法看來你正在尋找cumulative總和而是作爲MySQL不支持ANSI OLAP功能,所以無法計算的ANSI標準方式。

單向可能是使用變量並繼續將當前值添加到前面的總和中,如下所示。

set @runningSum := 0; 
select duration, 
     transactions, 
     @runningSum := @runningSum + transactions AS TransRunningSum 
from t1; 

結果:

duration transactions TransRunningSum 
------------------------------------------- 
1    2    2 
2    4    6 
5    3    9 
6    1    10 
7    2    12 
11    1    13 
13    1    14 
15    1    15 

DEMO


更新1:

作爲科爾高興的查詢在mySQL中得到支持,您也可以像下面一樣使用它來獲得相同的結果。

SELECT duration 
    ,transactions 
    ,(
     SELECT SUM(x.transactions) 
     FROM t1 x 
     WHERE x.duration <= t.duration 
     ) AS TransRunningSum 
FROM t1 t 
ORDER BY t.duration; 

結果:

duration transactions TransRunningSum 
------------------------------------------- 
1   2    2 
2   4    6 
5   3    9 
6   1    10 
7   2    12 
11   1    13 
13   1    14 
15   1    15 

DEMO

+0

謝謝。有用!! –

+0

我們可以在不使用變量的情況下實現嗎?我需要在視圖中顯示這些值,並且在視圖中我們不能使用變量。請建議 –

+0

您也可以使用更新的答案中顯示的相關查詢,儘管它不會像變量選項那樣快:-) – zarruq