FirstSortedValue - 스크립트 함수

FirstSortedValue()rank(지정된 경우)를 고려하여 sort_weight 인수를 정렬한 결과에 해당하는 value에 지정된 표현식의 값을 반환합니다. 지정된 rank에 대해 둘 이상의 결과 값이 동일한 sort_weight를 공유하는 경우 이 함수는 NULL을 반환합니다.

정렬된 값은 group by 절로 정의되거나, group by 절이 정의되지 않은 경우 전체 데이터 셋에서 집계된 대로 레코드 수에 대해 반복됩니다.

구문:  

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

반환 데이터 유형: dual

인수:  

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

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

distinct

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

예 및 결과:  

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

결과
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)에 대해 동일한 값이 2개 있으므로 결과는 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 외의 값이 반환됩니다.