sql - Oracle SQL - 将值放大以达到所需的总数
问题描述
我正在寻找一个允许我分解一组值以实现所需目标的 sql 函数/计算。
让它更清楚。我有构建产品的步骤。每一步都需要一定的时间。8.6、7.2、6.6、6.6、3.1、5.9、9.2、4.5、4.4、2.7、7.7、7.7、5.8。这些行的总和给了我 80 天的时间来完成构建。但是我的经理过来说现在需要 125 天。如何计算每个步骤,以便新的总数给我 125 天?
Excel 可以使用目标搜索来实现这一点。我在 SQL 或 PLSQL 中找不到类似的函数。
任何帮助是极大的赞赏。
解决方案
这是你想要的吗?
select t.*,
t.time * (125 / sum(t.time) over (partition by product)) as scaled_time
from t;
这会按比例放大每个值,因此总和将为125
.