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(
帶表頭)。
最簡單&
效率應該也是最快的(個人認為,有更好方法的童鞋歡迎交流)
1view codereport
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.
用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...