我有下表:
ID Quantity date
100 20 1-NOV-15
100 30 1-OCT-15
100 10 1-OCT-15
100 5 1-AUG-15
101 4 1-AUG-15
我想对每个 ID
的所有 Quantity
求和,直到与 ID
关联的 Date
意味着我想要得到这个:
ID Quantity Date sum
100 20 1-NOV-15 65 // sum all ID 100 till 1-NOV-15
100 30 1-OCT-15 45 // sum all ID 100 till 1-OCT-15
100 10 1-OCT-15 45 // sum all ID 100 till 1-OCT-15
100 5 1-AUG-15 5 // sum all ID 100 till 1-AUG-15
101 4 1-AUG-15 4 // sum all ID 101 till 1-AUG-15
我无法获得此结果。这是我写的:
Select ID,Date,SUM(Quantity)
From a
Group by ID,Date
order by ID
我不知道如何告诉 SUM
传递所有具有相同 ID
且它们的 Date
较小的记录.
最佳答案
您需要累计或运行总和。
Select ID, Date, SUM(Quantity) OVER (PARTITION BY ID ORDER BY DATE)
From a;
编辑:
默认框架选项是 range between unbounded preceding and current row
而不是 rows between unbounded preceding and current row
。如果您使用后者,结果将更像是:
ID Quantity Date sum
100 20 1-NOV-15 65 // sum all ID 100 till 1-NOV-15
100 30 1-OCT-15 45 // sum all ID 100 till 1-OCT-15
100 10 1-OCT-15 15 // sum all ID 100 till 1-OCT-15
100 5 1-AUG-15 5 // sum all ID 100 till 1-AUG-15
101 4 1-AUG-15 4 // sum all ID 101 till 1-AUG-15
但是,默认值适用于此问题。
关于sql - 如何使用 PostgreSQL 进行条件求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31113675/