需要统计截止到每个月月底的注册用户人数,users表里面有个registerdate的datetime字段
即,打比方是2009年度的,需要通过sql语句,知道2009年1月底以前一共注册了多少用户,2月底以前一共注册多少个。以此类推,用下面语句是不行的
select count(*), DATE_FORMAT(createdate, '%Y-%m') a from users group by a
这个语句是按月统计注册人数,并不是累积统计,只是单月统计; 能用一个sql语句实现吗? 谢谢
即,打比方是2009年度的,需要通过sql语句,知道2009年1月底以前一共注册了多少用户,2月底以前一共注册多少个。以此类推,用下面语句是不行的
select count(*), DATE_FORMAT(createdate, '%Y-%m') a from users group by a
这个语句是按月统计注册人数,并不是累积统计,只是单月统计; 能用一个sql语句实现吗? 谢谢
解决方案 »
- 以二进制保存的图片如何从sql server 2008 中读出并显示在页面, 有没有代码的demo?
- MYSQL 删表问题
- 谁能给我一个jsp中关于session传值的例子
- 请教一个正则表示式的写法
- 新手求助:javax.servlet加包的问题!
- Myeclipse10 中tomcat7.0启动异常
- 求操作网页时,在不刷新,跳转页面的情况下弹出自定义对话框的原理和代码(不要推荐框架)
- 谁帮我我就嘉给谁!!
- 分可多给:求JDBC连接SQLserver,Access,Foxpro,Excel解决方案。。。
- 一个中文文件名字的显示问题?
- Mysql如何 实现简单的 站内搜索
- jsp怎样做到屏蔽的效果
---oracle里可以是这样用
select count(*)over(partition by trunc(registerdate,'MM') order by registerdate)
from users
谢谢楼上的啊,不知道mysql有没有类似语法
FROM (SELECT date_format(mt_time, '%Y%m') mm
FROM t_mt_stat) t
GROUP BY t.mm WITH ROLLUP
FROM (SELECT date_format(mt_time, '%Y%m') mm
FROM t_mt_stat
WHERE mt_time >= '2009-01-01'
AND mt_time < '2010-01-01') t
GROUP BY t.mm WITH ROLLUP最后一行是使用 ROLLUP 得出的总计。SQL Server 与 MySQL 的 ROLLUP 语法一样,都采用 WITH ROLLUP,Oracle 中采用 ROLLUP 函数。
即,打比方是2009年度的,需要通过sql语句,知道2009年1月底以前一共注册了多少用户,2月底以前一共注册多少个。以此类推,用下面语句是不行的
select count(*), DATE_FORMAT(createdate, '%Y-%m') a from users group by a
这个语句是按月统计注册人数,并不是累积统计,只是单月统计; 能用一个sql语句实现吗? 谢谢你的这个语句要改成这样!GROUP BY 中是不能使用 SELECT 中的别名的select count(*), DATE_FORMAT(createdate, '%Y-%m') a from users group by DATE_FORMAT(createdate, '%Y-%m')
别费话,给分吧
结果和下列语句是一样的,不是我想要的
select count(*), DATE_FORMAT(createdate, '%Y-%m') a from users group by a