FirstSortedValue - 指令碼函數

FirstSortedValue() 會傳回在 value (對應於 sort_weight 引數的排序結果) 中指定的運算式的值,並考慮到 rank (若已指定)。如果多個結果值對指定的 rank 共用同一個 sort_weight,函數會傳回 NULL

排序值會在由 group by 子句所定義的若干記錄上反覆運算;若未定義 group by 子句,則會彙總完整的資料設定。

Syntax:  

FirstSortedValue ([ distinct ] value, sort-weight [, rank ])

Return data type: 雙值

Arguments:  

引數 描述
value Expression 該函數會找出對應於 sort_weight 排序結果的 value 運算式的值。
sort-weight Expression 包含待排序資料的運算式。會找出 sort_weight 的第一個 (最低) 值,可從中決定 value 運算式的對應值。如果在 sort_weight 前面加上減號,則函數會傳回最後一個 (最高) 排序值。
rank Expression

表示 rank "n" 大於 1 之後,將取得第 n 個排序的值。

distinct

如果 DISTINCT 這個字出現在函數引數之前,會忽略評估函數引數所產生的重複項目。

Examples and results:  

新增範例指令碼到您的文件中並加以執行。然後至少將結果資料行中所列的欄位新增至我們文件中的工作表,以查看結果。

範例 結果
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;

Customer MyProductWithSmallestOrderByCustomer

Astrida CC

Betacab AA

Canutility AA

Divadip DD

該函數將 UnitSales 從最小到最大排序,尋找具有最小 UnitSales 值、最小順序的 Customer 值。

因為 CC 對應於客戶 Astrida 的最小順序 (UnitSales 的值=2)。AA 對應於客戶 Betacab 的最小順序 (4),CC 對應於客戶 Canutility 的最小順序 (8),並且 DD 對應於客戶 Divadip. 的最小順序 (10)。

假設 Temp 表格已如前一個範例中所示載入:

LOAD Customer,FirstSortedValue(Product, -UnitSales) as MyProductWithLargestOrderByCustomer Resident Temp Group By Customer;

Customer MyProductWithLargestOrderByCustomer

Astrida AA

Betacab DD

Canutility CC

Divadip -

減號位於 sort_weight 前面,因此函數將最大的排在最前面。

因為 AA 對應於客戶 Astrida 的最大順序 (UnitSales 的值:18),DD 對應於客戶 Betacab 的最大順序 (12),並且 CC 對應於客戶 Canutility 的最大順序 (13)。客戶 Divadip 的最大順序 (16) 具有兩個相同的值,因此這會產生 Null 值結果。

假設 Temp 表格已如前一個範例中所示載入:

LOAD Customer,FirstSortedValue(distinct Product, UnitSales) as MyProductWithSmallestOrderByCustomer Resident Temp Group By Customer;

Customer MyProductWithLargestOrderByCustomer

Astrida AA

Betacab DD

Canutility CC

Divadip AA

這與先前的範例相同,已使用 distinct 限定詞的除外。這會導致忽略 Divadip 的重複結果,允許傳回非 Null 值。