關於內錶資料彙總的一些演算法

2022-03-30 23:14:04 字數 2436 閱讀 1437

1.

把某個字段相同行的數值型資料字段彙總

如:初始資料

fld1

fld2

fld3aa

1ab2

ba3處理後資料

fld1

fld2

fld3aa

3ba3

其中:fld1,fld2

為字元型,

fld3

為數值型。

要求:現在我們的要求是

:

fld1

相同的行的

fld3彙總到最前面那行(如果要彙總到最後那行,可以為

itab

乙個欄位設

fld4賦值1

,2,3

,。。然後

sort itab by fld1 descending fld4 discending.

再做下面的運算)

並把多餘的行刪除。

實際情況:(這是相當於

fld1

是父結點,

fld2

是子結點,

fld3

為數值)現在的要求就是求父結點的值(為所有子結點的值之和)

假設資料已經存在內錶

itab(

帶表頭)。

最簡單&

效率應該也是最快的(個人認為,有更好方法的童鞋歡迎交流)

1

report

ydemo_rick_a.

2data:begin

of itab occurs0,

3fld1,

4fld2,

5 fld3 typei,6

endof

itab.

7data wtab like

itab.

8data outtab like

table

of itab with

header

line

.9 itab-fld1 = 'a'

.10 itab-fld2 = 'a'

.11 itab-fld3 = 1.12

itab.

1314 itab-fld1 = 'a'

.15 itab-fld2 = 'b'

.16 itab-fld3 = 2.17

itab.

1819 itab-fld1 = 'b'

.20 itab-fld2 = 'a'

.21 itab-fld3 = 3.22

itab.

2324

loop

atitab.

25write: itab-fld1,itab-fld2,itab-fld3, /.

26endloop.27

28uline.29

30loop

atitab.

31on

change

of itab-fld1.

32 wtab =itab.

33else.34

**mothod 1

35 wtab-fld3 = itab-fld3.

36delete

itab.

37collect wtab into

itab.38*

*mothod 239*

add itab-fld3 to wtab-fld3.40*

delete itab.41*

modify table itab from wtab transporting fld3.42*

**用modify的效率應該更好(可以用transporting限制)不過資料量不大的話就看個人喜好了。

43endon.44

endloop.45

****下面為一種笨方法46*

loop at itab.47*

on change of itab-fld1.48*

49*outtab = itab. "記下彙總行50*

else.51*

outtab-fld3 = itab-fld3.52*

collect outtab.53*

endon.54*

endloop.

5556

loop

atitab.

57write: itab-fld1,itab-fld2,itab-fld3, /.

58endloop.

view code

用modify

的效率應該更好(可以用

transporting

限制),不過資料量不大的話就看個人喜好了。

一些演算法的彙總

一 k means演算法 原理 k means演算法的思想很簡單,對於給定的樣本集,按照樣本之間的距離大小,將樣本集劃分為k個簇。讓簇內的點盡量緊密的連在一起,而讓簇間的距離盡量的大。演算法 輸入是樣本集,聚類的簇樹k,最大迭代次數n 輸出是簇劃分 1 從資料集d中隨機選擇k個樣本作為初始的k個質心...

關於演算法的一些資料

1.clrs 演算法導論 演算法百科全書,只做了前面十幾章的習題,便感覺受益無窮。2.algorithms 演算法概論 短小精悍,別據一格,準經典之作。乙個壞訊息 同演算法導論,該書沒有習題答案。好訊息 習題很經典,難度也適中,只需花點點時間自己也都能做出來。不好也不壞的訊息 我正在寫習題的答案,已...

關於陣列的一些演算法

去除陣列裡,重複的元素 方案1,用陣列本身的特性,去重 datetime dt datetime.now string s new string q s.distinct toarray 方案2,相鄰的進行比較,如果不等,則加入list string stringarray s listlistst...