【摘要】
兩個有序集合之間可能進行一一對應的計算,比如兩個集合如何比較大小,怎樣判斷集合是否相等?如何簡便快捷的處理集合間的對位運算,這裡為你全程解析,並提供 esproc 示例**。有序集合間的對位運算
有序集合間的對位運算,包括比較運算(>,
集合可以使用符號 ">" 或 "2,所以 [1,3,1] 大於[1,2,2],無需比較後面的成員了。
【例 1】 以奧運會獎牌榜為例,查詢哪幾屆奧運會中國獎牌榜排名比俄羅斯靠前。部分資料如下:
奧運獎牌榜的規則是:首先對比金牌數量,金牌數高的排名靠前,金牌數低的排名靠後,金牌數相同的將會按照銀牌數再次對比排名。銀牌數高的排名靠前,銀牌數低的排名靠後,銀牌數相同的將會按照銅牌數再次對比排名。以此類推,銅牌數也相同的國家排名並列。
【spl 指令碼】
a5的執行結果如下:
比較兩個集合是否相等是很常見的需求,比如比較檔案內容是否相同,比較資料表的數值是否發生變化等。例如比較集合 [1,2,3] 和[2,1,3]是否相等。通常來說,集合的的對位成員不完全一致,認為兩個集合是不相等的。但是也有時候並不在意集合的成員順序,只需要比較兩個集合是否包含了同樣的成員。
【例 2】 下面是隨機抽樣後生成的檔案,比較兩次隨機抽樣是否選出了相同的序號。部分資料如下:
【spl 指令碼】
a3的執行結果如下:
結果為 0 表示兩個檔案 id 完全一致。
如果 id 的順序可能不同,可以使用函式 eq() 比較兩個集合的成員是否相同:
集合成員的對位計算,支援 +,-,*,/,%, 等四則運算。例如 3 天內 a 商店的銷售額集合是 [2,3,4],b 商店的銷售額集合是 [3,1,3],我們希望得到兩個商店的銷售額之和的集合 [5,4,7]。
【例 3】 求 2019 年 12 月 24 日到 26 日深證 300 (399007) 對深證成指 (399001) 的每日相對收益率。部分資料如下:
【spl指令碼】
a4的執行結果如下:
《spl cookbook》中還有更多相關計算示例。
陣列比較是否相同
環境 陣列a 和陣列b int arraya new int arrayb new 我們需要比較的是 陣列的內容,而不是陣列的 物件引用所以我們不能想當然的用 array.equals arraya arrayb 結果為false 現在我們來看看怎樣比較陣列的內容,當然你可以用迴圈來比較,在此我們就...
陣列比較是否相同
環境 陣列a 和陣列b int arraya new int arrayb new 我們需要比較的是陣列的內容,而不是陣列的物件引用所以我們不能想當然的用array.equals arraya,arrayb 結果為false 現在我們來看看怎樣比較陣列的內容,當然你可以用迴圈來比較,在此我們就不談迴...
比較兩檔案是否相同 cmp diff
cmp file1 file2 cmp比較兩個檔案,給出差別字元的位置和行號。比較方法 對兩個檔案的比較是逐字比較的。diff file1 file 比較兩個不同的檔案或不同目錄下的兩個同名檔案。比較方法 diff試圖找到file1和file2中連續相同行,這些相同行被改名為hunk的差別行所隔開。...