Ads by Google

  • --.--.--(--) --:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Oracle] 按分比率計算結果更新

  • 2008.02.06(水) 03:36
■したい事
 ・按分比率計算結果を更新

■条件
 ・按分比率の合計値が1になるための差分を求め、
  按分比率の最大値から0.000000001づつ、加減算する


ABCD
------------------------
Aa161.5(NULL)
Aa232.0(NULL)
Aa323.0(NULL)
Bb1122.0(NULL)
Bb211.5(NULL)
Bb39.5(NULL)
Cc10.3(NULL)
Cc20.3(NULL)
Cc30.3(NULL)



■更新イメージ

R1V1V2V3
------------------------
AAAAAa161.5
AAABAa232.0
AAACAa323.0
AAADBb1122.0
AAAEBb211.5
AAAFBb39.5
AAAGCc10.3
AAAHCc20.3
AAAICc30.3

・ROWIDと必要な列を抽出


V1V2
------------
A116.5
B143.0
C0.9

・総合計の算出


R1V1V2V3
--------------------------------
AAACAa30.197424893
AAABAa20.274678112
AAAAAa10.527896996
AAAFBb30.066433566
AAAEBb20.080419580
AAADBb10.853146853
AAAICc30.333333333
AAAHCc20.333333333
AAAGCc10.333333333

・各値を総合計値で除算、小数点第10桁で四捨五入


V1V2
--------------------
A-0.000000001
B0.000000001
C0.000000001

・除算結果を合計し、合計が1になるための差分を算出


R1V1V2V3V4V5
----------------------------------------------------------------
AAACAa30.197424893 -0.0000000010.000000001
AAABAa20.274678112-0.0000000010.000000001
AAAAAa10.527896996-0.0000000010.000000001
AAAFBb30.0664335660.0000000010.000000001
AAAEBb20.0804195800.0000000010.000000001
AAADBb10.8531468530.0000000010.000000001
AAAICc30.3333333330.0000000010.000000001
AAAHCc20.3333333330.0000000010.000000001
AAAGCc10.3333333330.0000000010.000000001

・差分の絶対値を算出


R1V1V2V3V4
------------------------------------------------------------------------
AAAA0.527896996-0.0000000010.0000000010.000000001
AAAB0.274678112-0.0000000010.0000000010.000000002
AAAC0.197424893-0.0000000010.0000000010.000000003
AAAD0.8531468530.0000000010.0000000010.000000001
AAAE0.0804195800.0000000010.0000000010.000000002
AAAF0.0664335660.0000000010.0000000010.000000003
AAAG0.3333333330.0000000010.0000000010.000000001
AAAH0.3333333330.0000000010.0000000010.000000002
AAAI0.3333333330.0000000010.0000000010.000000003

・HOGA.A毎の絶対値加減算用数値を前レコードから足していく


R1V1
------------------------
AAAA0.527896995
AAAB0.274678112
AAAC0.197424893
AAAD0.853146854
AAAE0.080419580
AAAF0.066433566
AAAG0.333333334
AAAH0.333333333
AAAI0.333333333

・按分比率の最大値から加減算する


■実行結果


ABCD
----------------------------
Aa161.50.527896995
Aa232.00.274678112
Aa323.00.197424893
Bb1122.00.853146854
Bb211.50.080419580
Bb39.50.066433566
Cc10.30.333333334
Cc20.30.333333333
Cc30.30.333333333



VIEW UPDATE を使いたかった... orz
コメント
コメントの投稿
管理者にだけ表示を許可する