sql - 公式买三送一

标签 sql math plsql oracle10g

我正在尝试编写 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); 

但我的值(value)观不一致。

有时它适用于

trunc(p-b / 3 * 2.25); 

我的公式有误吗?我应该使用 trunc 或 mod。

最佳答案

要计算付费/免费内容的数量:

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;
/

关于sql - 公式买三送一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46521608/

相关文章:

sql - 如何在字符串中嵌入变量?

c++ - (7 - 12) mod 24 等于 19 但在 C++ 中它等于 4294967291

sql - Postgresql:使用 Join 将多个几何合并为单个几何

c# - LINQ 查询 C# ASP

math - 傅里叶级数在计算机科学方面有什么应用吗?

oracle - 执行前在 Oracle 中测试 native 动态 SQL

sql - 在 sql EOF 中声明 bash 变量

java - MyBatis Oracle 调用 PLS-00306 : wrong number or types of arguments in call Error

mysql - 如何使用两个连接运行递归查询?

algorithm - 什么函数伪随机地重新排序 N 个项目?