现遇到一难题,想实现线路表中的数据按照线路的投运年限统计,但是投运年限的间隔由用户输入。即要实现按照用户输入的投运年限的间隔把线路表中的所有数据进行分组,想了半天没想到合适的SQL,期待高手的解答,先谢了。。

解决方案 »

  1.   

    怎么分是不是1-5,6-10,11-15……这么分?
    如果是的话,可以group by ceil(col/5)
      

  2.   

    你好,我想实现的是如下统计结果:投运年限       条数
    0           112000
    5           12000
    10          130000
    15          140000
    20          150000
    25          60000
    30          50000而group by ceil(col/5) 只能实现如下结果:投运年限       条数0       9
    1      235
    1      188
    1      33
    1      110
    1      230
    2      104
    2      296
    2      232
    2      208
    2      252
    3       81
    3       80
    3       83
    3       60
    3       58
    4       102
    4       74
    4       62
    4       81
    4       65
    5       35
    5       76
    5       64
    5       44
    5       36
    6       43
    6       26
    还是没有实现按照投运年限的间隔分组,能不能再帮忙想想先谢了啊
      

  3.   

    如果使用2年的话,是归为0还是5?
    试试下面的SQL
    select 临时年限,sum(条数)
    from (select floor(年限/5)*5 临时年限 ,条数 
         from Table)
    group by 临时年限
      

  4.   

    如果使用2年的话,是归为0还是5?
    试试下面的SQL
    select 临时年限,sum(条数)
    from (select floor(年限/5)*5 临时年限 ,条数 
         from Table)
    group by 临时年限
      

  5.   

    select ceil(投运年限/5)*5  ,sum(条数)
    from Table
    group by ceil(投运年限/5)
    order by ceil(投运年限/5)
      

  6.   

    你好,问题已解决了,谢谢。不过用sum不如用count()统计方便吧? 我是这么写的,如下所示:select ceil((to_char(sysdate, 'yyyy') - to_char(XLXX.TYRQ, 'yyyy')) / 5) * 5,
           count(obj_id)
      from mw_app.mwt_ud_sbd_xlxx xlxx
     group by ceil((to_char(sysdate, 'yyyy') - to_char(XLXX.TYRQ, 'yyyy')) / 5)
     order by ceil((to_char(sysdate, 'yyyy') - to_char(XLXX.TYRQ, 'yyyy')) / 5)