*SQL,有限制的累计计算
SQLite 的 process_table 表存储库存信息,arrivals是到货吨数,max_output_capacity 是最大库存吨数,理论上当天的 arrivals 要小于 max_output_capacity,否则不能完全入库,要留到第二天再入库。
day |
arrivals |
max_output_capacity |
0 |
0 |
2 |
1 |
2 |
3 |
2 |
5 |
4 |
3 |
0 |
5 |
4 |
0 |
5 |
5 |
14 |
1 |
6 |
0 |
3 |
7 |
1 |
2 |
8 |
1 |
12 |
请增加一个计算列remaining_next_day,用来计算当天的不能入库,要留到第二天的吨数。
day |
arrivals |
max_output_capacity |
remaining_next_day |
0 |
0 |
2 |
0 |
1 |
2 |
3 |
0 |
2 |
5 |
4 |
1 |
3 |
0 |
5 |
0 |
4 |
0 |
5 |
0 |
5 |
14 |
1 |
13 |
6 |
0 |
3 |
10 |
7 |
1 |
2 |
9 |
8 |
1 |
12 |
0 |
编写SPL代码:
=sqliteDB.query("select * from process_table order by day")
.derive(if((t=remaining_next_day[-1]+arrivals-max_output_capacity)>0,t,0):remaining_next_day)
函数derive新增计算列,[-1]表示上一条记录。
来源:https://www.reddit.com/r/SQL/comments/1c865t8/query_to_calculate_the_remaining_units_to_the/
英文版