一句話得到中間值的多條記錄

xiaohuihui發表於2020-06-15

這個計算步驟比較多,首先需要用 distinct 去重得到值的集合,還要根據它的個數算出中間位置在哪,得到中間位置的值,再查詢所有等於中間值的記錄。SQL 裡比較難保持這些中間狀態的變數,得用多層巢狀的子查詢實現,寫出來有難度,之後了再讀懂也不容易。

 

這種情況如果用集算器 SPL 語言就比較容易,從資料庫得到原始資料:

>T=connect(”mysqlDB”).query(“select * from T”)

然後很短的一句話就能把多個計算步驟都囊括了:

>s=T.id(f),m=s.sort().m((s.len()+1)\2),r=T.select(f==m)

除了中間值,還有最大值 / 最小值的相關運算,SPL 進一步提供了 TopN 的幾種變種運算,在清晰的分步計算能力之外,又提供了便利,可以取 TopN 的值 / 記錄 / 記錄在集合中的位置,可以應用到分組子集,參考

 

當資料不在資料庫裡時,SPL 載入資料仍然方便:
=file(“d:/t.csv”).import(;,",")

SPL能很方便地嵌入到JAVA應用,可參考 。

具體使用方法可參考 。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2698370/,如需轉載,請註明出處,否則將追究法律責任。

相關文章