需要统计截止到每个月月底的注册用户人数,users表里面有个registerdate的datetime字段
即,打比方是2009年度的,需要通过sql语句,知道2009年1月底以前一共注册了多少用户,2月底以前一共注册多少个。以此类推,用下面语句是不行的
select count(*), DATE_FORMAT(createdate, '%Y-%m')   a from users group by  a
这个语句是按月统计注册人数,并不是累积统计,只是单月统计; 能用一个sql语句实现吗? 谢谢

解决方案 »

  1.   

    select count(*) where 月份>1月 and 月份<2月
      

  2.   


    ---oracle里可以是这样用
    select count(*)over(partition by trunc(registerdate,'MM') order by registerdate)
       from users 
      

  3.   


    谢谢楼上的啊,不知道mysql有没有类似语法
      

  4.   

    用转换函数取成字符串用LIKE比较就行了啥.转换函数忘记 嘿嘿~~~!
      

  5.   

    SELECT ifnull(t.mm, 'TOTAL'), count(*)
      FROM (SELECT date_format(mt_time, '%Y%m') mm
              FROM t_mt_stat) t
     GROUP BY t.mm WITH ROLLUP
      

  6.   

    可以在子查询中指定条件:SELECT ifnull(t.mm, 'TOTAL'), count(*)
      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 函数。
      

  7.   

    需要统计截止到每个月月底的注册用户人数,users表里面有个registerdate的datetime字段
    即,打比方是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')
      

  8.   

    select count(*)+(select count(*) from users where DATE_FORMAT(createdate, '%Y-%m')< DATE_FORMAT(u.createdate, '%Y-%m')), DATE_FORMAT(createdate, '%Y-%m') from users u group by  DATE_FORMAT(createdate, '%Y-%m')
    别费话,给分吧
      

  9.   


    结果和下列语句是一样的,不是我想要的
    select count(*), DATE_FORMAT(createdate, '%Y-%m')  a from users group by  a