某类商品在超市中的平均停留时间

下面有一个简化的超市的库存管理系统内的一些表,

首先是商品表 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 位小数:

..