本帖最后由 mofei168 于 2011-12-19 11:27:20 编辑

解决方案 »

  1.   

    with t as ( 
    select 11 as personcount,to_date('2011-01-01','yyyy-mm-dd') As datetime from dual 
    union all 
    select 22 as personcount,to_date('2011-01-03','yyyy-mm-dd') As datetime from dual 
    union all 
    select 2 as personcount,to_date('2011-01-04','yyyy-mm-dd') As datetime from dual 
    union all 
    select 5 as personcount,to_date('2011-01-05','yyyy-mm-dd') As datetime from dual 
    )
    select case when personcount >=0 And personcount <10 then '0-10' 
                when personcount >=10 And personcount <20 then '10-20' 
                when personcount >=20 And personcount <30  then '20-30' end as 分段,
           sum(personcount) 总人数,count(distinct datetime) as 总天数 
    from t 
    group by   case when personcount >=0 And personcount <10 then '0-10' 
                when personcount >=10 And personcount <20 then '10-20' 
                when personcount >=20 And personcount <30  then '20-30' end       
      

  2.   


    select (personcount-1)/10 as fenduan,
    sum(personcount) as sum_per,
    count(distinct riqi) as tianshu
    from tb_name
    group by (personcount-1)/10
      

  3.   

    with t as ( 
    select 11 as personcount,to_date('2011-01-01','yyyy-mm-dd') As datetime from dual 
    union all 
    select 22 as personcount,to_date('2011-01-03','yyyy-mm-dd') As datetime from dual 
    union all 
    select 2 as personcount,to_date('2011-01-04','yyyy-mm-dd') As datetime from dual 
    union all 
    select 5 as personcount,to_date('2011-01-05','yyyy-mm-dd') As datetime from dual 
    )
    select trunc( (personcount-1)/10) as 分段,
    sum(personcount) as sum_per,
    count(distinct datetime) as tianshu
    from t
    group by trunc((personcount-1)/10)
      

  4.   


    select to_char(trunc((111-1)/10))||'0-'||to_char(trunc((111-1)/10)+1)||'0' as fenduan,
    sum(personcount) as sum_per,
    count(distinct riqi) as tianshu
    from tb_name
    group by to_char(trunc((111-1)/10))||'0-'||to_char(trunc((111-1)/10)+1)||'0'
      

  5.   

    加个绝对值函数
    select to_char(trunc(abs(personcount-1)/10))||'0-'||to_char(trunc(abs(personcount-1)/10)+1)||'0' as fenduan,
    sum(personcount) as sum_per,
    count(distinct riqi) as tianshu
    from tb_name
    group by to_char(trunc(abs(personcount-1)/10))||'0-'||to_char(trunc(abs(personcount-1)/10)+1)||'0'
      

  6.   

    完美答案,非常感谢lxpbs8851同时也感谢quanhj