Mysql 时间间隔上的累积和
以下是用户表Mysql 时间间隔上的累积和,mysql,Mysql,以下是用户表 --------------------------------------- | uid | reg_date | --------------------------------------- | 1 | 2011-07-20 02:24:36 | --------------------------------------- | 2 | 2012-10-03 07:37:43 |
---------------------------------------
| uid | reg_date |
---------------------------------------
| 1 | 2011-07-20 02:24:36 |
---------------------------------------
| 2 | 2012-10-03 07:37:43 |
---------------------------------------
| ... | ... ... ... ... ... |
---------------------------------------
| 300000 | 2015-12-19 04:13:51 |
---------------------------------------
我想从这个表中按月从curdate数据中获取最近1年的数据
我尝试了以下查询
SELECT month,
@cnt := @cnt + total cum_sum
FROM (
SELECT MONTH(reg_date) month,
COUNT(*) total
FROM users
WHERE reg_date >= CURDATE() - INTERVAL 1 YEAR
GROUP BY YEAR(reg_date), MONTH(reg_date)
) n, (SELECT @cnt := 0) users_alias
但它生成了过去12个月的数据,因为在此之前没有数据。但我希望它是从当月的实际累计计数开始的。我怎样才能做到这一点?谢谢
更新
期望输出
-----------------------
| month | cum_sum |
-----------------------
| 10 | 1000 |
-----------------------
| 11 | 1500 |
-----------------------
| 12 | 2550 |
-----------------------
| 1 | 9700 |
-----------------------
| 2 | 11000 |
-----------------------
| 3 | 14000 |
-----------------------
| 4 | 15700 |
-----------------------
| 5 | 20000 |
-----------------------
| 6 | 22000 |
-----------------------
| 7 | 27000 |
-----------------------
| 8 | 31000 |
-----------------------
| 9 | 35000 |
-----------------------
| 10 | 41000 |
-----------------------
在sql语句末尾将@cnt变量初始化为0:
(SELECT @cnt := 0) users_alias
您需要更改此设置以将计数器初始化为在以下操作之前注册的用户数:
(SELECT @cnt := count(*) from users
where regdate<CURDATE() - INTERVAL 1 YEAR) users_alias
在sql语句末尾将@cnt变量初始化为0:
(SELECT @cnt := 0) users_alias
您需要更改此设置以将计数器初始化为在以下操作之前注册的用户数:
(SELECT @cnt := count(*) from users
where regdate<CURDATE() - INTERVAL 1 YEAR) users_alias
您能展示您的表模式并给出您想要的输出示例吗?您能展示您的表模式并给出您想要的输出示例吗?