邮费计算

B2C 网站需要计算订单的邮寄费用,大部分情况下,邮费由包裹的总重量决定,但是,当订单的价格超过 300 美元时,提供免费付运。详细规则如下面的 mailCharge 表所示:

..

该表记录了各个字段在各种取值范围内时的邮费。例如,第一条记录表示,COST字段取值在 300 1000000 之间的时候,邮费为 0(免费付运);第二条记录表示,WEIGHT字段取值在 0 1kg)之间时,邮费为 10(美元)。

下面是该网站的一些订单testOrder

..

请计算这些订单的详细邮费。

分别找出资费记录中 FIELD 字段为 COST WEIGHT的记录,再对着整个订单记录进行循环。先判断订单记录中的 COST值是否满足免费标准,不满足则根据重量判断邮费档次。


A

B

1

=T("mailCharge.txt")

=T("testOrder.txt")

2

=A1.select@1(FIELD=="COST")

=A1.select(FIELD=="WEIGHT").sort(MINVAL)

3

=B1.derive(if(A2.MINVAL < COST, A2.CHARGE, B2.segp@r(MINVAL, WEIGHT).CHARGE):POSTAGE)

A1读出邮费标准,B1读出订单数据。

A2选出免费标准的数据,由于这是单一记录,因此添加@1选项;B2选出重量计费的标准,并按重量范围升序排序:

..

..

A3在订单数据中增加邮费字段,设置时先根据COST判断是否达到优惠金额,设置对应的优惠邮费(本例中免费);否则用segp在邮费标准中找到WEIGHT所在的区间,并取得对应的邮费完成设定,由于使用的区间是左开右闭区间,因此添加了@r选项。得到最终的结果如下:

..