【发布时间】:2012-02-28 00:06:08
【问题描述】:
我目前正在尝试使用百分比列拆分一个值。但是由于大多数百分比值是 1/3,我无法获得绝对 100% 的值,其中包含两个小数点。例如:
Product Supplier percentage totalvalue customer_split
decimal(15,14) (decimal(18,2) decimal(18,2)
-------- -------- ------------ --------------- ---------------
Product1 Supplier1 0.33 10.00 3.33
Product1 Supplier2 0.33 10.00 3.33
Product1 Supplier3 0.33 10.00 3.33
因此,我们在值列中缺少 0.01,供应商希望将这个缺少的 0.01 值随机放置在任何一个供应商中。我一直试图在两组带有临时表的 SQL 中完成这项工作,但有没有任何 simple 方法可以做到这一点。如果可能的话,我怎样才能在上述行之一的百分比列中获得 0.34? 0.01 是可以忽略不计的值,但是当值列是 1000000000 时,它是显着的。
【问题讨论】:
-
百分比有 14 位小数,为什么不在
percentage列中输入0.33333333333333? -
如果我说“你可以更新供应商 SET percent = 0.34 WHERE ...”那么你可能会明白通过阅读这个问题来理解你真正需要的东西是多么困难......
-
看看 Martin Fowler 的“数量”模式。 martinfowler.com/eaaDev/quantity.html 特别看一下关于分钱的讨论。示例中的除法返回一个值数组,而不是单个值。值数组加起来就是总数。我发现这很简单。
-
我知道我们可以在已经计算的百分比之上更新/使用第二组 sql,这就是我目前正在解决的问题。但是在同一个 sql 中没有一个简单的逻辑我们在哪里计算百分比?