使用YEARWEEK增量计数(*)
问题描述:
我有一堆数据存储在一个表中,每行以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语句来做这件事。
答
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)
+0
@ Chud37这不是正确的答案。如果你仔细看到这个链接的答案,你会明白为什么它是错误的。 – GurV
答
您可以使用用户变量来获得运行中计:
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);
你能不能给看看http://stackoverflow.com/questions/2563918/create- a-cumulative-sum-column-in-mysql – etsa