我要汇总一个端口在五分钟内的数据流入流量,请问一下汇总语句怎么写?数据库里有端口的原始数据

解决方案 »

  1.   

    select sum(流量) from xxx where time between xxx and xxx(看你要哪5分钟)
      

  2.   

    select to_number(to_char(sysdate,'yyyymmddhhmiss')),to_number(to_char(sysdate,'yyyymmddhhmiss')) + 60 * 5 from dual
      

  3.   

    首先想到这方法了  但是效率一般 
    with t1 as
    (
         select to_date('2012-07-01 10:00:00','yyyy-mm-dd hh24:mi:ss') c1,100 c2 from dual
         union all
         select to_date('2012-07-01 10:00:30','yyyy-mm-dd hh24:mi:ss') c1,100 c2 from dual
         union all
         select to_date('2012-07-01 10:05:05','yyyy-mm-dd hh24:mi:ss') c1,100 c2 from dual
         union all
         select to_date('2012-07-01 10:08:00','yyyy-mm-dd hh24:mi:ss') c1,100 c2 from dual
         union all
         select to_date('2012-07-01 10:10:11','yyyy-mm-dd hh24:mi:ss') c1,100 c2 from dual
         union all
         select to_date('2012-07-01 10:22:00','yyyy-mm-dd hh24:mi:ss') c1,100 c2 from dual
         union all
         select to_date('2012-07-01 10:26:00','yyyy-mm-dd hh24:mi:ss') c1,100 c2 from dual
    )select t2.c1,t2.c2,nvl(sum(t1.c2),0) c3
    from 
    (select distinct m+(level-1)/288 c1, m+(level)/288 c2
    from t1,(select min(c1) m,max(c1) n from t1) t2
    connect by level <= round((n-m)*288,0)+1
    order by c1
    ) t2 left join t1 on t1.c1 between t2.c1 and t2.c2
    group by t2.c1,t2.c2
    order by t2.c1
              c1            c2            c3
    ------------------------------------------------------------------
    1 2012/7/1 10:00:00 2012/7/1 10:05:00 200
    2 2012/7/1 10:05:00 2012/7/1 10:10:00 200
    3 2012/7/1 10:10:00 2012/7/1 10:15:00 100
    4 2012/7/1 10:15:00 2012/7/1 10:20:00 0
    5 2012/7/1 10:20:00 2012/7/1 10:25:00 100
    6 2012/7/1 10:25:00 2012/7/1 10:30:00 100
      

  4.   

    有一个思路,比如你开始的时间是A,然后你取得每一个时间减A的得到的分钟数,这个分钟数除以5,取结果的整数部分(小数完全舍掉),得到一列B,这样每五分钟的时间段内的数据,B都是相同的,然后根据B来group by,就可以了。