簡體   English   中英

買3送1的公式

[英]Formula for Buy 3 get 1 Free

我正在嘗試編寫PL / SQL,以便在購買一定數量的物品時獲得多少錢。 如果您購買3件商品,則可免費獲贈1件商品。

因此,對於購買的每第4個項目,其中一個是免費的。 這意味着如果4件商品被“購買”,我將支付3件商品。 如果達到10項,則應支付8項,其中2項是免費的。

p-b     v_p
***     ***
1        1                  = 1
2        2                  = 2
3        3                  = 3
4        3(1)               = 3
5        3(1) + 1           = 4
6        3(1) + 2           = 5
7        3(1) + 3           = 6
8        3(1) + 3(1)        = 6
9        3(1) + 3(1) + 1    = 7
10       3(1) + 3(1) + 2    = 8
11       3(1) + 3(1) + 3    = 9
12       3(1) + 3(1) + 3(1) = 9

我有

trunc(p-b / 3 * 2.4); 

但我的價值觀不一致。

有時它適用

trunc(p-b / 3 * 2.25); 

我不正確地做公式嗎? 我應該使用trunc或mod。

我會使用truncmodulo

SELECT p-b, (trunc(p-b /4)) * 3 + mod(p-b, 4)
FROM your_table

演示

我們可以使用以下公式來獲得結果。

假設n = pb

n - ( n - mod( n, 4 ) ) / 4

例如:

 SELECT n, n - (n - mod(n,4))/4 result
      FROM (SELECT     LEVEL n
                  FROM DUAL
            CONNECT BY LEVEL <= 12)

以簡單的方式,結果是:

p-b - trunc(p-b / 4);

要計算支付/免費資料的數量:

DECLARE
        nAmount NUMBER := '10';
        nPay NUMBER;
        nFree NUMBER;
BEGIN
        nPay := nAmount - TRUNC(nAmount / 4);
        nFree := TRUNC(nAmount / 4);
        DBMS_OUTPUT.PUT_LINE('Pay: ' || nPay);
        DBMS_OUTPUT.PUT_LINE('Free: ' || nFree);
END;
/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM