给定层

时间:2016-08-08 21:58:19

标签: ms-access

目的

根据客户目前的折扣开发定价模型。请注意,当前客户的折扣并非完全相同(例如,客户A获得25.25%的折扣,而客户B获得25.1238%的折扣)。

APPROACH

  1. 计算现有客户,加权折扣(已完成)

  2. 创建一个带范围的DISCOUNT TABLE(例如“青铜折扣”= 0-15%, 白银= 15-25%,黄金= 25%-35%等。)(已完成)

  3. 根据折扣表(INCOMPLETE)
  4. 将客户置于最近(!!!)层

    问题

    由于舍入变量(即“最接近的10%”)实际上正在发生变化,我很难将某人四舍五入到最近的等级 - 第一层= 15%,第二层= 10%,第三层= 25%。由于等级正在发生变化,Allen Browne's strategy还不够。

    请注意,我正试图根据他们的CURRENT DISCOUNT和新的折扣表将人们推到最近的等级;只是检查某人是否落在两个表层之间是不够的。

    示例

    表: 青铜= 0-15% 银= 15-25%

    客户A,现有加权平均折扣= 15.50%,新计算等级= 25%(银) 客户B,现有加权平均折扣= 14.95%,新计算等级= 15%(青铜)

    在上述案例中,与客户B相比,客户A获得了巨大的折扣,尽管他们现有的加权平均值接近。客户A的新计算层不正确,应放入青铜包中。

    问题(S)

    1. 如何有效地将客户放在最近的一层?

2 个答案:

答案 0 :(得分:1)

您只需要更高的百分比,如:

Bronze = 15
Silver = 25
Gold = 35

然后:

Select 
    Customers.*, 
    (Select Top 1 Discount.DiscountName
    From Discount 
    Order By Abs(Discount.Percentage - Customer.Discount) Asc) As CustomerDiscount
From Customers

答案 1 :(得分:0)

由于我不确定你的确切表格结构,这样的可能会起作用或者是一个很好的起点。

System.ComponentModel.DataAnnotations.MaxLength