l 问题
某B2C网站需要计算订单的邮寄费用,大部分情况下,邮费有包裹的总重量决定,但是,当订单的价格超过300美元时,提供免费付运。详细规则如下面的mailCharge表所示:
| field | minVal | maxVal | Charge | 
| cost | 300 | 1000000 | 0 | 
| weight | 0 | 1 | 10 | 
| weight | 1 | 5 | 20 | 
| weight | 5 | 10 | 25 | 
| weight | 10 | 1000000 | 40 | 
该表记录了各个字段在各种取值范围内时的邮费。例如,第一条记录表示,cost字段取值在300与1000000之间的时候,邮费为0(免费付运);第二条记录表示,weight字段取值在0到1(kg)之间时,邮费为10(美元)。
下面是该网站的一些订单:
| id | cost | weight(kg) | 
| Josh1 | 150 | 6 | 
| Drake | 100 | 3 | 
| Megan | 100 | 1 | 
| Josh2 | 200 | 3 | 
| Josh3 | 500 | 1 | 
请计算这些订单的详细邮费。
l 思路
大致思路:分别找出资费记录中filed字段为cost和weight的记录,再对着整个订单记录进行循环。先判断订单记录中的cost值是否满足免费标准,不满足则根据重量判断邮费档次。
l 代码
| 
 | A | B | C | D | 
| 1 | =file("C:\\txt\\mailCharge.txt").import@t() | /读邮费表 | 
 | 
 | 
| 2 | =file("C:\\txt\\testOrder.txt").import@t() | /读订单表 | 
 | 
 | 
| 3 | =A1.select(FIELD=="COST") | /读取免费记录 | 
 | 
 | 
| 4 | =A1.select(FIELD=="WEIGHT").sort(-MINVAL) | /读取按重量计费记录 | 
 | 
 | 
| 5 | =A2.derive(POSTAGE) | /给订单表增加邮费记录 | 
 | 
 | 
| 6 | for A5 | 
 | 
 | 
 | 
| 7 | 
 | if A3.MINVAL < A6.COST | /当订单价格超过免费标准时 | 
 | 
| 8 | 
 | 
 | >A6. POSTAGE= A3.CHARGE | /免费付运 | 
| 9 | 
 | 
 | next | 
 | 
| 10 | 
 | for A4 | 
 | 
 | 
| 11 | 
 | 
 | if A6.WEIGHT > B10.MINVAL | /根据重量判断邮费档次 | 
| 12 | 
 | 
 | 
 | >A6. POSTAGE= B10.CHARGE | 
| 13 | 
 | 
 | 
 | next A6 | 
l 结果
