oracle - 如何计算具有相同 id 的行的总和?
问题描述
我需要创建一个返回产品最终增益的函数。我的问题是,对于每个需要 10 天以上才能处理的 PRODUCT_ID,我必须将 (days * 0.0001) 添加到产品价格中。许多 ORDER_ID 有不同的 PRODUCT_ID。我想不出在同一个函数中做到这一点的方法。我必须在哪里添加乘法?数据库架构是这样的
我尝试了双循环并尝试了 SUM,但这些都不起作用。
CREATE OR REPLACE FUNCTION get_gain(orderID NUMBER)
RETURN NUMBER
AS
total_price NUMBER;
total_cost NUMBER;
gain NUMBER;
Cursor cur1 IS
SELECT SUM(PRICE) AS "Total PRICE"
FROM ORDERS
WHERE ORDER_ID=orderID;
Cursor cur2 IS
SELECT SUM(COST) AS "Total COST"
FROM ORDERS
WHERE ORDER_ID=orderID;
BEGIN
OPEN cur1;
FETCH cur1 INTO total_price;
CLOSE cur1;
OPEN cur2;
FETCH cur2 INTO total_cost;
CLOSE cur2;
gain := total_price - total_cost;
RETURN gain;
END;
解决方案
您可以使用以下方法来构建您的查询。我相信您不需要任何功能来执行此操作
SELECT
ORDER_ID,
...
CASE WHEN DAYS_TO_PROCESS > 10 THEN
PRICE + DAYS_TO_PROCESS * 0.0001
ELSE
PRICE
END AS PRICE
FROM table1
WHERE ...
目前尚不清楚您要达到的目标。请提供更多细节。
这是更新产品价格的功能示例
CREATE OR REPLACE FUNCTION UpdatePrice(orderID NUMBER)
RETURN NUMBER
AS
total_price NUMBER;
total_cost NUMBER;
gain NUMBER;
BEGIN
UPDATE table1
SET PRICE =
CASE WHEN DAYS_TO_PROCESS > 10 THEN
PRICE + DAYS_TO_PROCESS * 0.0001
ELSE
PRICE
END
WHERE ORDER_ID = p_ORDER_ID;
END;
推荐阅读
- python - “RequestsCookieJar”对象不可调用
- ios - 请问,如何将此动画从 kotlin 更改为 swift?
- javascript - 如何在 AWS Amplify/AppSync 中为深度嵌套关系建模
- html - 将 HTML 转换为 PDF 时,在每页上重复左侧部分
- haskell - Haskell:如何为构造函数定义构造函数类Foldable的实例
- django - 有没有办法在不使用 CLI 的情况下在 Heroku 上为 Django 应用程序创建超级用户?
- objective-c - 怪癖消失的空白字符串
- python - Django 3.1.3 中的电子邮件激活链接问题
- ios - 删除部分然后再次插入后,UITableView 中的自定义页脚视图不可见
- python - 如何检查连接四中的对角线