기본 콘텐츠로 건너뛰기

FirstSortedValue - 스크립트 함수

FirstSortedValue()는 단위 가격이 가장 낮은 제품의 이름 등과 같이 sort_weight 인수의 정렬 결과에 해당하는 value에서 지정된 표현식으로부터의 값을 반환합니다. 정렬 순서의 n번째 값은 rank에서 지정할 수 있습니다. 둘 이상의 결과 값이 지정된 rank에 대해 동일한 sort_weight를 공유하는 경우, 해당 함수는 NULL을 반환합니다. 정렬된 값은 group by 절로 정의된 레코드 수에 대해 반복되거나, group by 절이 정의되지 않은 경우 전체 데이터 셋에 대해 집계됩니다.

Syntax:  

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

Return data type: dual

Arguments:  

Argument Description
value Expression 이 함수는 sort_weight를 정렬한 결과에 해당하는 value 표현식의 값을 찾습니다.
sort-weight Expression 저장할 데이터가 포함된 표현식입니다. 해당하는 value 표현식 값을 결정할 sort_weight의 첫 번째(가장 낮은) 값을 찾습니다. sort_weight 앞에 빼기 기호가 있는 경우, 이 함수는 마지막(가장 높은) 정렬 값을 반환합니다.
rank Expression

rank "n"을 1보다 큰 수로 지정하면 정렬된 n번째 값을 얻을 수 있습니다.

distinct

함수 인수 앞에 DISTINCT라는 단어가 있을 경우 해당 함수 인수의 평가 결과로 생성된 중복이 무시됩니다.

Examples and results:  

예제 스크립트를 앱에 추가하고 실행합니다. 그런 다음, 결과를 보기 위해 결과 열에 나열된 필드를 앱의 시트에 추가합니다.

아래의 결과 열과 동일한 결과를 얻으려면 속성 패널의 정렬 아래에서 자동을 사용자 지정으로 전환한 후 숫자순 및 사전순 정렬을 선택 취소합니다.

Example Result

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

The function sorts UnitSales from smallest to largest, looking for the value of Customer with the smallest value of UnitSales, the smallest order.

Because CC corresponds to the smallest order (value of UnitSales=2) for customer Astrida. AA corresponds to the smallest order (4) for customer Betacab, AA corresponds to the smallest order (8) for customer Canutility, and DD corresponds to the smallest order (10) for customer Divadip..

Given that the Temp table is loaded as in the previous example:

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

Customer MyProductWithLargestOrderByCustomer

Astrida AA

Betacab DD

Canutility CC

Divadip -

A minus sign precedes the sort_weight argument, so the function sorts the largest first.

Because AA corresponds to the largest order (value of UnitSales:18) for customer Astrida, DD corresponds to the largest order (12) for customer Betacab, and CC corresponds to the largest order (13) for customer Canutility. There are two identical values for the largest order (16) for customer Divadip, therefore this produces a null result.

Given that the Temp table is loaded as in the previous example:

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

Customer MyProductWithLargestOrderByCustomer

Astrida AA

Betacab DD

Canutility CC

Divadip AA

This is the same as the previous example, except the distinct qualifier is used. This causes the duplicate result for Divadip to be disregarded, allowing a non-null value to be returned.