FirstSortedValue - 指令碼函數
FirstSortedValue() 會傳回在 value (對應於 sort_weight 引數的排序結果) 中指定的運算式的值,並考慮到 rank (若已指定)。如果多個結果值對指定的 rank 共用同一個 sort_weight,函數會傳回 NULL。
排序值會在由 group by 子句所定義的若干記錄上反覆運算;若未定義 group by 子句,則會彙總完整的資料設定。
語法:
傳回的資料類型: 雙值
引數:
引數 | 描述 |
---|---|
value Expression | 該函數會找出對應於 sort_weight 排序結果的 value 運算式的值。 |
sort-weight Expression | 包含待排序資料的運算式。會找出 sort_weight 的第一個 (最低) 值,可從中決定 value 運算式的對應值。如果在 sort_weight 前面加上減號,則函數會傳回最後一個 (最高) 排序值。 |
rank Expression |
表示 rank "n" 大於 1 之後,將取得第 n 個排序的值。 |
distinct |
如果 DISTINCT 這個字出現在函數引數之前,會忽略評估函數引數所產生的重複項目。 |
範例與結果:
新增範例指令碼到您的文件中並加以執行。然後至少將結果資料行中所列的欄位新增至我們文件中的工作表,以查看結果。
範例 1:
Temp:
LOAD * inline [
Customer|Product|OrderNumber|UnitSales|CustomerID
Astrida|AA|1|10|1
Astrida|AA|7|18|1
Astrida|BB|4|9|1
Astrida|CC|6|2|1
Betacab|AA|5|4|2
Betacab|BB|2|5|2
Betacab|DD|12|25|2
Canutility|AA|3|8|3
Canutility|CC|13|19|3
Divadip|AA|9|16|4
Divadip|AA|10|16|4
Divadip|DD|11|10|4
] (delimiter is '|');
FirstSortedValue:
LOAD Customer,FirstSortedValue(Product, UnitSales) as MyProductWithSmallestOrderByCustomer Resident Temp Group By Customer;
結果欄位 (客戶) | 結果值 (MyProductWithSmallestOrderByCustomer) |
---|---|
Astrida | CC |
Betacab | AA |
Canutility | AA |
Divadip | DD |
該函數將 UnitSales 從最小到最大排序,尋找具有最小 UnitSales 值、最小順序的 Customer 值。
因為 CC 對應於客戶 Astrida 的最小順序 (UnitSales 的值=2)。AA 對應於客戶 Betacab 的最小順序 (4),AA 對應於客戶 Canutility 的最小順序 (8),並且 DD 對應於客戶 Divadip 的最小順序 (10)。
範例 2:
假設 Temp 表格已如前一個範例中所示載入:
LOAD Customer,FirstSortedValue(Product, -UnitSales) as MyProductWithLargestOrderByCustomer Resident Temp Group By Customer;
結果欄位 (客戶) | 結果值 (MyProductWithLargestOrderByCustomer) |
---|---|
Astrida | AA |
Betacab | DD |
Canutility | CC |
Divadip | - |
減號位於 sort_weight 前面,因此函數將最大的排在最前面。
因為 AA 對應於客戶 Astrida 的最大順序 (UnitSales 的值:18),DD 對應於客戶 Betacab 的最大順序 (12),並且 CC 對應於客戶 Canutility 的最大順序 (13)。客戶 Divadip 的最大順序 (16) 具有兩個相同的值,因此這會產生 Null 值結果。
範例 3:
假設 Temp 表格已如前一個範例中所示載入:
LOAD Customer,FirstSortedValue(distinct Product, -UnitSales) as MyProductWithSmallestOrderByCustomer Resident Temp Group By Customer;
結果欄位 (客戶) | 結果值 (MyProductWithLargestOrderByCustomer) |
---|---|
Astrida | AA |
Betacab | DD |
Canutility | CC |
Divadip | AA |
這與先前的範例相同,已使用 distinct 限定詞的除外。這會導致忽略 Divadip 的重複結果,允許傳回非 Null 值。