temp 表结构(id,kind,number)   id为自增字段. select id, 
      (select sum(number) 
   from temp t2 where t2.kind = t1.kind and t2.id < t1.id 
   ) as number 
from temp t1 想优化这条语句,请大侠们指导下.谢谢. 因为数据量很大时,不可能每条语句都去将前面的数据进行累加哦.这样效率很慢... 真心的谢谢大家... 

解决方案 »

  1.   

    比如
    id kind number
    1    a    10
    2    a     15
    3    b     10
    4    a     20
    5    b     5----->查询出结果(结果顺序可以乱,比如可以kind或者id分组等)
    id  kind  number
    1   a     0
    2   a     10
    3   b     0
    4   a     25
    5   b     10
      

  2.   

    SELECT ID,KIND,NUMBER,SUM(NUMBER) OVER(PARTTION BY KIND ORDER BY KIND,NUMBER) - NUMBER FROM TEMP;
    使用分析函数来求连续累加值,然后再减去当前行自己的值。