【发布时间】:2015-10-04 20:54:01
【问题描述】:
下面是用户表
---------------------------------------
| 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
但它会生成最近十二个月的数据,因为在此之前没有数据。但我希望它从当月的实际累积计数开始。我怎样才能做到这一点?谢谢。
更新
想要的输出
-----------------------
| 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 |
-----------------------
【问题讨论】:
-
您能否展示您的表架构并举例说明您想要的输出?
标签: mysql