algorithm - 如何在记录之间分配值

标签 algorithm tsql sql-server-2008

我有值 1000 和表:

table
(
  Id int (PK),
  Percent float,
  Value int
)

我必须根据两个法则(两个分离的策略)为该表中的每条记录分配 1000 个字段值:

1)平均分配策略

2) 分配策略的百分比

按策略1)输入

Id  Percent Value
1,  -       0
2,  -       0
3,  -       0

输出

Id  Percent Value
1,  -       333
2,  -       333
3,  -       334

按策略2)输入

 Id  Percent Value
 1,  10%       0
 2,  90%       0

输出

Id  Percent Value
1,  10%       100
2,  90%       900

谁能解释一个优雅的方法来做到这一点。 谢谢。

最佳答案

UPDATE yourtable SET Value =( SELECT 1000/COUNT(Value) from yourtable )

UPDATE yourtable SET Value =( Value * Percent )

但不确定如何处理舍入错误。

编辑:可能在第一种情况下使用第二条语句将缺失的数字添加到最后一行。

UPDATE yourtable SET Value = Value + 1000 -( SELECT SUM(Value) from yourtable) where id= (SELECT MAX(Id) from yourtable)

但这并不好,因为最后一行的数字可能会大得多……您最终会比其他行的数字大得多。 (尝试使用 6 个输入行运行查询...)

关于algorithm - 如何在记录之间分配值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5897661/

相关文章:

mysql - 返回计数以及结果集

c# - 为什么我的应用程序如此等待同步?

algorithm - 关于图中两个节点之间的最短路径的声明?

java - 在计算大小为 K 的非连续子数组之和时查找数组值

algorithm - 如何设计一种算法来计算倒计时式数学数字拼图

sql - MS SQL 将日期行合并为开始结束日期

java - 如何在此代码中显示负数阶乘

database - 如何使用 T-SQL 调用 exec(@sql) 来更改当前数据库?

sql - 我无法启用 sa 帐户

SQL - 将表传递给 Select 中的 UDF