java更新blob字段的值_对一个BLOB字段如何用update 来更新?? (100分)
一個簡單的算法:
從第一條記錄開始計算R的累計值,放到一個新的字段S,即
每條記錄的S = 上條記錄的S + 本條記錄的R
這樣: 第6條記錄的S - 第1條記錄的S = 第2到第6條記錄的R之和
第7條記錄的S - 第2條記錄的S = 第3到第7條記錄的R之和
...
問題簡化成2條記錄S之差的最大值了,不管要求幾分鐘的和都沒問題。
例:
記錄 ShiCi R S
1 2003-01-01 00:00 2.3 2.3
2 2003-01-01 00:01 0.0 2.3
3 2003-01-01 00:02 1.5 3.8
4 2003-01-01 00:03 3.2 7.0
5 2003-01-01 00:04 1.2 8.2
6 2003-01-01 00:05 3.5 11.7
7 2003-01-01 00:06 0.1 11.8
8 2003-01-01 00:07 2.3 14.1
9 2003-01-01 00:08 3.2 17.3
....
....
2003-12-31 23:59 1.7
推導過程:
設SumStart[X]為第X分鐘開始的和,R[X]為第X分鐘的R字段值,設求5分鐘的和,則
SumStart[0] = R[0] + R[1] + R[2] + R[3] + R[4]
SumStart[1] = SumStart[0] - R[0] + R[5]
SumStart[2] = SumStart[1] - R[1] + R[6] = (SumStart[0] - R[0] + R[5]) - R[1] + R[6]
= SumStart[0] - (R[0] + R[1]) + (R[5] + R[6])
SumStart[3] = SumStart[3] - R[3] + R[7]
= SumStart[0] - (R[0] + R[1] + R[2]) + (R[5] + R[6] + R[7])
這個問題基本上成了求每條記錄從頭開始R的累計值了,這樣可以簡化了。
如果增加一個字段(比如S)記錄從R[0]開始的累計值,這只要計算一次就夠了,以后不管要查詢幾分鐘的和,都不用再次計算,則:
SumStart[X] = SumStart[0] - S[X-1] + (S[X+4] - S[4])
其中SumStart[0]就等于S[4],所以在確定N(要計算N分鐘的和)之后,問題成了求(-S[X-1] + S[X+(N-1)])的最大值了,這樣應該很簡單了吧。
這是我的推導過程,其實現(xiàn)在才想起來,計算完累計值之后,S[X+4]-S[X-1]就是第X分鐘開始5分鐘的和,不用那么復雜的過程,呵呵。
總結
以上是生活随笔為你收集整理的java更新blob字段的值_对一个BLOB字段如何用update 来更新?? (100分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 按格式输出时间_java格式输
- 下一篇: “无劳别修道”下一句是什么