0

SQL リクエストを最適化するための助けが必要です。

次のようなテーブルがあります。

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

1 つのリクエストで、count(id) の累積を持つ 1 つの列を追加したいと思います。

私はそのような要求で試します:

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

成功せず

助けてくれてありがとう

4

1 に答える 1

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 |

SQLフィドル

于 2013-03-13T07:55:27.390 に答える