分段累计
【问题】
有这样一组数据 a,b 两字段
a b
10 3
21 4
33 6
46 7
52 10
现在想得到这样的结果
a<10 sum(b)
a<20 sum(b)
a<30 sum(b)
a<40 sum(b)
a<50 sum(b)
即:
10 0
20 3
30 7
40 13
50 20
这样的需求 SQL 应该怎么写啊?数据 a 的值有很大有 1000 个段啊。
【回答】
Oracle 中可以建立辅助区间表结合分析函数实现,实现方式过于复杂,使用 SPL 实现就比较简单,脚本如下:
A | |
---|---|
1 | $SELECT A,B FROM TB1 ORDER BY A |
2 | =A1.groups((A)\10+1;sum(B)).new(#1*10:C,sum(#2[:0]):D) |
A1:查找数据
A2:分组统计,生成当前区间,并汇总小于当前区间的值,生成新序表。
运行结果: