某类商品在超市中的平均停留时间
下面有一个简化的超市的库存管理系统内的一些表,
首先是商品表 Commodity.txt,记录各种产品的信息:
下面是进货记录表Stock.txt,超市在每天早上 5 点钟进货,下表记录了每次进货每种商品的进货数量:
最后是超市的销售记录表Sale.txt:
为考察销售情况,需要算出 2009 年 6 月“生鲜 (Fresh)”类的商品在超市内的平均停留时间。
首先要解决“平均停留时间”这个数据要如何计算,超市不可能为每件商品做单独的记录,所以计算每件商品的停留时间是行不通的。通过数学换算,可以知道,“平均停留时间”可以通过平均卖出时间减去平均进货时间得到,这个算法可以解决我们当前的问题。只要筛选出指定类别商品的进货和销售记录,接下来进行时间平均值的统计也是很容易进行的了。
A |
B |
|
1 |
=T("Commodity.txt").keys(ID) |
|
2 |
=T("Stock.txt").select(month@y(Datetime)==200906) |
=T("Sale.txt").select(month@y(Datetime)==200906) |
3 |
>cate="Fresh",day1=date(2009,6,1) |
>A2.switch(Commodity,A1), B2.switch(Commodity,A1) |
4 |
=A2.select(Commodity.Category==cate) |
=B2.select(Commodity.Category==cate) |
5 |
=A4.sum(Volume) |
=A4.sum(interval@s(day1, Datetime)*Volume) |
6 |
=B4.sum(Volume) |
=B4.sum(interval@s(day1, Datetime)*Volume) |
7 |
=(A5-A6)*interval@s(day1, elapse@m(day1,1)) |
=round((A7+B6-B5)/A5/(3600*24),1) |
https://try.esproc.com/splx?33l
A1读出商品信息表,A2 读出 2009 年 6 月的进货记录表,B2 读出 2009 年 6 月的销售记录表。
A3设置计算使用到的变量,分类 cate 设为生鲜 Fresh,并将计算初始时间定为 2009 年 6 月 1 日零时。
B3用 switch 将产品信息与进货和销售信息做外键连接,将产品序号转换为对应的产品记录。A4 和 B4 中,选出生鲜类的进货信息和销售信息。
A5计算出所有生鲜类商品的总进货量,B5 计算出进货时间和起点时间的时间差乘以进货数量的积的总和:
A6计算出所有生鲜类商品的总销售量,B6 计算出销售时间和起点时间的时间差乘以销售数量的积的总和:
如果进货和销售都按照起点时间计算,A7 计算出生鲜类产品的总滞留时间。在 B7 中,根据 B5 和 B6 的结果做调整,即可得到实际的总滞留时间,除以商品总数后,即可得到总平均滞留秒数,再将其折算为平均滞留天数,结果保留 1 位小数:
Commodity.txt
Stock.txt
Sale.txt
英文版