现在有如下数据
行号 收入
1 1111
2 2222
3 3333
4 4444
5 5555
6 6666
合计 23331现有差异500,然后差异金额除以收入总额算出系数,再拿收入金额* 系数,结果要保留两位,最后差异合计比实际多0.01 ,请问这个0.01改如何处理,如何能分配到最后一行,通过语句的方式
行号 收入 分摊系数 分摊金额
1 1111 0.021430715 23.81
2 2222 0.021430715 47.62
3 3333 0.021430715 71.43
4 4444 0.021430715 95.24
5 5555 0.021430715 119.05
6 6666 0.021430715 142.86
合计 23331                  500.01

解决方案 »

  1.   

    直接update, 抓取金额最大行的ROWID,以此为条件update
      

  2.   

    我想用row_number() over函数,但是我如何获取最大的行号,金额最大行有可能有相同的
      

  3.   

    还有rank和dense_rank
      

  4.   

    row_number() over是个排序的序号,over()里面可以用order desc排序,然后取排序第一位的就行
      

  5.   

    你的意思是sql返回的结果,比正确的值,有0.01的偏差,对吗。
    如果是这样,请把数据库里存数字的字段类型,无论是金额,还是其它,只要存数字的字段类型,统统换成DECIMAL类型。
      

  6.   

    共 N行,最后一行的数值,可以为 500 - SUM(N1+ N2+ 。 N(N-1))