2017-05-08 67 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);