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

阅读(567) 标签: 平均, 换算, file, import, keys, switch, sum, long, floor,

l  问题

下面有一个简化的超市的库存管理系统内的一些表,为考察销售情况,需要算出6月份“生鲜”类的商品在超市内的平均停留时间。需要的表如下:

首先是商品表,记录各种产品的信息:

下面是进货记录表,超市在每天早上5点钟进货,下表记录了每次进货每种商品的进货数量:

下面是超市的销售记录详表:

 

l   思路

大致思路:首先要解决“平均停留时间”这个数据要如何计算,超市不可能为每件商品做单独的记录,所以计算每件商品的停留时间是行不通的。通过数学换算,可以知道,“平均停留时间”可以通过平均卖出时间减去平均进货时间得到,这个算法可以解决我们当前的问题。只要筛选出指定类别商品的进货和销售记录,接下来进行时间平均值的统计也是很容易进行的了。

1.  首先将进货表和销售表的商品字段都替换为商品表中相应的记录。

2.  筛选出“生鲜”分类的进货记录。

3.  筛选出“生鲜”分类的销售记录。

4.  求出总的进货数量。

5.  以月初为起点,算出进货时间和起点时间的时间差乘以进货数量的积的总和。

6.  求出总的销售数量。

7.  以月初为起点,算出销售时间和起点时间的时间差乘以销售数量的积的总和。

8.  对剩余的商品,即没卖出的商品,将其“销售时间”取为月底。

9.  平均销售时间减去平均进货时间,即为平均滞留时间。

10.  整理结果格式,将时间单位换算为天,并舍去过多的小数位,即为结果。

 

l  代码

 

A

 

1

=file("C:\\txt\\Stock.txt").import@t().select(month(Datetime)==6). derive()

6月的进货表

2

=file("C:\\txt\\Sale.txt").import@t().select(month(Datetime)==6). derive()

6月的销售表

3

=file("C:\\txt\\Commodity.txt").import@t()

商品表

4

Fresh

指定的类别

5

>A1.keys(Commodity), A2.keys(Commodity), A3.keys(ID)

设置三个表的主键

6

>A1.switch(Commodity,A3), A2.switch(Commodity,A3)

将进货和销售表的商品字段替换为记录

7

=A1.select(Commodity.Category==A4)

筛选出指定分类的进货记录

8

=A2.select(Commodity.Category==A4)

筛选出指定分类的销售记录

9

=A7.sum(Volume)

求出总进货数量

10

=A7.sum(long(interval@s("2009-6-1 00:00:00",Datetime)*Volume))

以月初为起点,算出进货时间和起点的时间差总和

11

=A8.sum(Volume)

求出总销售数量

12

=A8.sum(long(interval@s("2009-6-1 00:00:00",Datetime)*Volume))

以月初为起点,算出销售时间和起点的时间差总和

13

=long((A9-A11)*interval@s("2009-6-1 00:00:00","2009-7-1 00:00:00"))

对没卖出的商品,设置其滞留时间截止到月底

14

=(A12+A13)/A9-A10/A9

平均销售时间减去平均进货时间,即为平均滞留时间

15

=floor(A14/60/60/24,1)

换算成天数,并舍去多余小数,方便查看

 

l  结果