2016-08-08 57 views
0

目的舍入到最近的,定層

開發基於關閉客戶目前折扣的定價模型。請注意,目前客戶的折扣不完全相同(例如,客戶A收到25.25%的折扣,而客戶B收到25.1238%的折扣)。

APPROACH

  1. 計算一個現有客戶,加權折扣(已完成)

  2. 創建範圍折扣表(例如, 「青銅折扣」= 0-15%, 銀= 15-25%,金= 25%-35%等)。(完成)

  3. 根據折扣表在最近(!!!)層stomers (不完全)

發行

我有一個艱難的時間,因爲四捨五入取整人到最近的層變量(即「最接近的10%」)實際上正在變化 - 第一層= 15%,第二層= 10%,第三層= 25%。由於層次變化,Allen Browne's strategy不足。

請注意,我試圖根據他們的當前折扣和新的折扣表推送人們到最近的層級;簡單地檢查是否有人落在兩個餐桌層之間是不夠的。

表: 青銅= 0-15% 銀= 15〜25%

客戶A,現有加權平均折扣= 15.50%,新計算的層= 25%(銀) 客戶B,現有加權平均折扣= 14.95%,新計算的層= 15%(青銅)

在前述方式的情況下,相較於客戶B,despit當客戶A接收到一個巨大的折扣e他們現有的加權平均數接近。客戶A的新計算層不正確,應放入青銅包裝中。

問題(S)

  1. 我怎樣纔能有效地把在最近的一線客戶?
+0

最接近真正合適的詞嗎?除此之外,由於範圍不重疊,因此您應該能夠...... .... C INNER JOIN DT ON C.currentDiscount> = DT.tierBegin AND C.currentDiscount Uueerdo

+0

正確 - 我正在尋找客戶落入最近的層級,無論該層級是高於還是低於他們當前的現有折扣 – jonplaca

+0

@標識標籤需要從「mysql」更改爲「ms-access」? – Uueerdo

回答

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 
+0

最終將您的方法轉換爲Excel格式,以便管理人員可以輕鬆操縱定價層。對於那些對excel公式感興趣的人,請參閱:= INDEX(B1:B20,MATCH(MIN(ABS(A1:A20-C1)),ABS(A1:A20-C1),0)),來自:https://answers.microsoft.com/zh-CN/office/forum/office_2007-excel/finding-the-ultimate-closest-number-in-table/f9b4955d-6141-452b-83f2-747e5497a87d?auth= 1 – jonplaca

0

因爲我不知道你的確切表結構,這樣的事情威力工作或者是一個很好的起點。

SELECT c.CustomerID 
, (SELECT DiscountID 
    FROM discounts AS d 
    ORDER BY ABS(d.ceiling-c.currentDiscount) ASC 
    LIMIT 1) AS nearestDiscountID 
FROM customers AS c