表
rbd_dtl
的rbp_value
字段儲存著字串「
all」和一些字母,現在要將該字段拼成分段的字串,形如:
a-f,h,j-k,n-o,q-s,u-v,x-z
源資料如下:
具體規則是:
如果rbp_value=
「all
」,則捨去該值。
如果rbp_value
前後都是連續的字母,則取第乙個字母和最後乙個字母作為一段,中間用橫槓,比如「
a-f」。
如果rbp_value
出現間隔,比如k和
n之間缺少l和
m,則k之前作為一段,
n之後作為一段,兩段之間用逗號分隔,形如:「
j-k,n-o」。
如果rbp_value
前後都不連續,比如
h前面缺少
g,後面缺少
i,則當前值單獨作為一段。
集算器寫法:
a1:執行sql。
a2:將a1
的rgb_value
按照字母表對齊,部分結果如下:
a3:對a2
進行分組,
rbd_value
等於null
時分一組,不等於
null
時再分一組。
@o表示歸併式分組,只對前後資料進行比較。結果如下:
a4:選出非空的組。
a5:根據組內成員個數拼湊字串。
~.m(-1)
表示取當前組的最後一條記錄。計算結果如下:
a6:用逗號合併集合成員,即:
a-f,h,j-k,n-o,q-s,u-v,x-z
事實上只需要取出
rbd_value
就可以了,**也可以合併為一句:
mydb1.query("select rbd_value from rbd_dtl").(rbd_value).align(26.(char(64+~))).group@o(!~).select(~(1)).(~(1)+if(~.len()>1,"-"+~.m(-1))).string@d() 。
簡化SQL計算之實現優先隨機更新
目標 隨機更新表 tmp survey tran bz 3 working 中符合條件的 20條記錄,將 quota include ind 字段更新為 y 更新時有優先順序,如果 customer type r 的記錄大於 20條,則隨機更新這裡的 20條記錄。如果 customer type r...
SQL之建立計算字段
儲存在資料庫表中的資料一般不是應用程式所需要的格式。所以這個時候就需要使用計算欄位來輸出自己需要的格式。1.拼接字段 根據dbms的不同,拼接所表示的語法有所不同。oracle和sqlite中使用 操作符。select vend name vend country from vendors orde...
演算法的演化 簡化與統一 計算數學之美
1976年,atiyah,數學的統一性 如果我們積累起來的經驗要一代一代傳下去的話,我們就必須不斷地努力把它們加以簡化和統一 我們深信 由於計算機解題的原理是簡單的,演算法設計的思想和基本技術也應當是簡單的,常用的快速 高效的演算法,均可概括為所述的模式,比如 快速縮減 並行演算法等。在數值演算法設...