2013-03-13 159 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