有一个表CALL_TICKET,有两个字段,话单流水(TICKET_ID),通话时长(DURATION),例如:
TICKET_ID   DURATION
1                      10
2                      12
3                      65
......
现在要解决的是,我按TICKET_ID自小到大的顺序的统计通话时长(DURATION),找到累加到2000的时候,TICKET_ID的值是多少。
请教有什么好办法,采用存储过程循环话单的效率太低了,不用这种方法。。 

解决方案 »

  1.   

    OPER@tl> select aaa,bbb,sum(bbb) over(order by aaa) rn from test;       AAA        BBB         RN
    ---------- ---------- ----------
             1          1          1
             2          2          3
             3          5          8
             4        543        551
             5         53        604OPER@tl> select * from test;       AAA        BBB
    ---------- ----------
             1          1
             2          2
             3          5
             4        543
             5         53OPER@tl> select * from
      2  (select aaa,bbb,sum(bbb) over(order by aaa) sum
      3  from test
      4  order by sum desc)
      5  where sum<=552
      6  and rownum=1;       AAA        BBB        SUM
    ---------- ---------- ----------
             4        543        551OPER@tl>
      

  2.   

    你建(TICKET_ID,DURATION)联合索引。
      

  3.   

    db2没用过。这个分析函数oracle独有,不知道db2有无相同功能的函数。