2017-05-08 66 views
-1

我有一堆數據存儲在一個表中,每行以ts列結尾,類型TIMESTAMP使用YEARWEEK增量計數(*)

我想獲得的增量計數,直到一個點,所以比如我有以下查詢:

SELECT YEARWEEK(ts), DATE(ts), COUNT(*) FROM爲了WHERE DATE(ts) >= '01/12/13' GROUP BY YEARWEEK(ts)

將會產生類似:

201346 20/11/2013 59 
201347 24/11/2013 44 
201348 01/12/2013 21 

不過,我需要一個列,加起來,直到這一點,所以我需要這樣的東西:

201346 20/11/2013 59 59 
201347 24/11/2013 44 103 
201348 01/12/2013 21 124 

我怎樣才能實現這與MySQL?這是一個線形圖,所以我需要證明這些數字每週都在增加,而我不能用當前的SQL語句來做這件事。

+0

你能不能給看看http://stackoverflow.com/questions/2563918/create- a-cumulative-sum-column-in-mysql – etsa

回答

1
SET @SUM:=0; 
SELECT YEARWEEK(ts), DATE(ts), COUNT(*),(@SUM := @SUM+COUNT(*)) as CSUM 
FROM orders WHERE DATE(ts) >= '01/12/13' GROUP BY YEARWEEK(ts) 

禮貌this answer from Andomar

+0

@ Chud37這不是正確的答案。如果你仔細看到這個鏈接的答案,你會明白爲什麼它是錯誤的。 – GurV

0

您可以使用用戶變量來獲得運行中計:

set @total := 0 

select YEARWEEK(ts), 
    date(ts), 
    COUNT(*), 
    @total := @total + COUNT(*) as running_count 
FROM order 
WHERE date(ts) >= '01/12/13' 
group by YEARWEEK(ts) 
order by YEARWEEK(ts);