现有一个用户表大约有20万左右的数据,需要统计出每一月份用户注册数,注销数等等 具体如下图,如何写sql语句
sqloracle

解决方案 »

  1.   

    select to_char(时间,'YYYYMM'),SUM(注册数),SUM(注销数).... from table group by to_char(时间,'YYYYMM') ,产品名称,地市名称
    不知道LZ是不是要这样的效果
      

  2.   

    如果里面的日期是完全的  可以直接分组统计  如果不完全 那么构造一个日期表 用日期来左连接要查询的表统计数量select to_date('2013-03'||'-01','yyyy-mm-dd')+level-1 dt
    from dual
    connect by level <= ADD_MONTHS(to_date('2013-03','yyyy-mm'),1)-TRUNC(to_date('2013-03','yyyy-mm'),'MM')
      

  3.   

    CREATE TABLE USERS
    (
    USER_ID varchar2(36) default sys_guid() primary key,
    PHONENUMBER char(30) unique not null,
    USERTYPE char(1) not null,  -- 0 会员 1 体验
    REGISTERTIME date default sysdate,--注册时间
    CANCELEDTIME date, --注销时间 
    CITY varchar2(20) not null,--所属城市
    ISCANCELED char(1) default 0,  --0 未注销 1 已注销
    .......
    )
      

  4.   

        我觉得是这个  样子的  我不清楚 你那个 有没 有 一个 时间 那个字段  ,没有的 话 在 虚拟一个 表,
    在进行联合 查询,我只现在 只能 想到 这么多,对这个表 不是 很清楚。select sum(case DELETEDFLAGwhen 0 then
                  1
               end) as counts
      from tab_third_party
           
            select count(case DELETEDFLAG
                           when 1 then
                            0
                         end) as '注销',
                   count(case DELETEDFLAG
                           when 0 then
                            0
                         end) as '未注销',
                   count(case USERTYPE
                           when 0 then
                            0
                         end) as '会员',
                   count(case USERTYPE
                           when 0 then
                            0
                         end) as '体验'
              from USERS
    group by "时间"