gpt4 book ai didi

sql - 求和分值问题(处理舍入误差)

转载 作者:行者123 更新时间:2023-12-04 21:50:55 24 4
gpt4 key购买 nike

我有一个 4 欧元的产品,我需要将这笔钱分配给 3 个部门。
在第二列上,我需要获取此产品的行数并除以部门数。

我的查询:

select
department, totalvalue,
(totalvalue / (select count(*) from departments d2 where d2.department = p.product))
dividedvalue
from products p, departments d
where d.department = p.department

Department Total Value Divided Value
---------- ----------- -------------
A 4 1.3333333
B 4 1.3333333
C 4 1.3333333

但是当我对这些值求和时,我得到 3,999999。当然有数百行我得到很大的不同......
是否有机会定义 2 个十进制数字并舍入最后一个值? (我的结果是 1.33 1.33 1.34)
我的意思是,某种方式来调整最后一行?

最佳答案

为了处理这个问题,对于每一行,您必须执行以下操作:

  • 执行除法
  • 将结果四舍五入到适当的美分数
  • 对舍入的数量与除法运算结果之间的差求和
  • 当差值的总和超过最低小数位(在本例中为 0.01)时,将该数量添加到下一个除法运算的结果中(四舍五入后)。

  • 这将在各行中均匀分配小数部分。不幸的是,在 SQL 中没有简单的方法可以通过简单的查询来做到这一点。在过程代码中执行此操作可能会更好。

    至于它有多重要,对于金融应用和机构来说,这样的事情是非常重要的,哪怕只是一分钱,哪怕每X条记录都会发生一次;通常,用户希望看到与一分钱(或任何您的货币单位)完全相关的值(value)。

    最重要的是,您不想允许像 "Superman III" 这样的漏洞利用。或 "Office Space"发生。

    关于sql - 求和分值问题(处理舍入误差),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4784864/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com