【发布时间】:2016-04-14 14:48:42
【问题描述】:
我使用的是 Postgresql 9.2,我需要将数量从底部向上求和,初始值为 100,但是如果遇到名称为 X 的行,我需要从该行中 qty 的值重新开始求和。
例如:
itemorder name qty
1 A -20
2 A2 350
3 X 40
4 A 50
5 A -10
6 A2 10
应该生成:
itemorder name qty modifyed_sum
1 A -20 20 / 40 + (-20)
2 A2 350 40 / not A
3 X 40 40 / encounter X, restart sum with X qty.
4 A 50 140 / 90 + 50
5 A -10 90 / 100 + (-10)
6 A2 10 100 / not A
我用这个查询来求和:
SELECT 100 + Sum(CASE WHEN name = 'a' THEN qty ELSE 0 END)OVER(ORDER BY itemorder DESC) as modifyed_sum,
qty,
name,
itemorder
FROM Table_Name
ORDER BY itemorder ASC
如何修改它以处理 X 案例? (可以有多个 X)
【问题讨论】:
-
看不懂
SUM()algorithm,能详细点吗? -
我已经在每一行附近解释了它是如何工作的。请注意,总和是 BUTTOM UP 而不是 TOP DOWN。这是我之前的问题:stackoverflow.com/questions/34487883/…当前问题扩展它。
标签: sql postgresql