[英]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。
我們可以使用以下公式來獲得結果。
假設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.