2013-03-13 160 views
0

我需要帮助来优化我的SQL请求。按年份和月份计算的MySQL总数以及Calcul累计计数

我有一个表,看起来像这样:

id,resgier_date,action 
1,'2011-01-01 04:28:21','signup' 
2,'2011-01-05 04:28:21','signup' 
3,'2011-02-02 04:28:21','signup' 

如何选择和分组这些所谓的输出是:

year,month,total,cumulative_sum 
2011,1,2,2 
2011,2,1,3 

我想,有一个请求,添加一个累计数(id)的列。

我试图用这样的请求:

SELECT YEAR(REGISTER_DATE), 
    count(*), 
    @running_total := @running_total + count(*) AS cumulative_sum 
FROM MYTABLE t 
    JOIN (SELECT @running_total := 0) r 
GROUP BY YEAR(REGISTER_DATE) 
LIMIT 0 , 30 

没有成功

感谢(给你的帮助

回答

2

尝试

SELECT year, 
     month, 
     total, 
     @rt := @rt + total cumulative_sum 
    FROM (
     SELECT YEAR(register_date) year, 
       MONTH(register_date) month, 
       COUNT(*) total 
      FROM mytable 
      GROUP BY YEAR(register_date), MONTH(register_date) 
      LIMIT 0, 30 
     ) n, (SELECT @rt := 0) r 

输出

| YEAR | MONTH | TOTAL | CUMULATIVE_SUM | 
----------------------------------------- 
| 2011 |  1 |  2 |    2 | 
| 2011 |  2 |  1 |    3 | 

SQLFiddle

+0

非常感谢你这是很好的! – 2013-03-13 09:22:24

+0

@BigFoot不客气。请考虑** [接受](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)**答案是否有帮助。 – peterm 2013-03-13 15:11:42