FirstSortedValue

Funkcja FirstSortedValue() zwraca wartość z wyrażenia podanego argumentem value, która odpowiada wynikowi posortowania według argumentu sort_weight z uwzględnieniem argumentu rank (jeśli został podany). W przypadku uzyskania więcej niż jednej wartości o takim samym wyniku sort_weight dla podanej wartości argumentu rank funkcja zwraca NULL.

Syntax:  

FirstSortedValue([{SetExpression}] [DISTINCT] [TOTAL [<fld {,fld}>]] value, sort_weight [,rank])

Return data type: podwójny

Arguments:  

Argument Opis
value Pole danych wyjściowych Funkcja znajduje wartość wyrażenia value odpowiadającą wynikowi sortowania argumentu sort_weight.
sort_weight

Pole wejściowe Wyrażenie zawierające dane do sortowania. Znajdowana jest pierwsza (najniższa) wartość argumentu sort_weight, na podstawie której określana jest wartość wyrażenia podanego argumentem value. Jeśli przed argumentem sort_weight zostanie podany znak minusa, funkcja zwróci ostatnią (najwyższą) wartość z sortowania.

rank

Podanie dla parametru rank wartości „n” większej niż 1 spowoduje zwrócenie n-tej wartości w kolejności sortowania.

SetExpression Funkcja agregacji będzie domyślnie dokonywać agregacji na zbiorze możliwych rekordów zdefiniowanym przez daną selekcję. Alternatywny zestaw wierszy można zdefiniować za pomocą wyrażenia analizy zestawów.
DISTINCT Jeśli przed argumentami funkcji występuje słowo DISTINCT, wówczas duplikaty wynikające z wyników obliczenia argumentów funkcji są pomijane.
TOTAL

Jeśli słowo TOTAL występuje przed argumentami funkcji, wówczas obliczenie jest wykonywane względem wszystkich możliwych wartości z uwzględnieniem bieżących selekcji, nie tylko tych należących do bieżącej wartości wymiaru, to znaczy z pominięciem wymiarów wykresu.

Po kwalifikatorze TOTAL może następować lista zawierająca co najmniej jedną nazwę pola w nawiasach trójkątnych <fld>. Te nazwy pól powinny być podzbiorem zmiennych wymiaru wykresu.

Określenie zakresu agregacji

Examples and results:  

Customer Product UnitSales UnitPrice
Astrida AA 4 16
Astrida AA 10 15
Astrida BB 9 9
Betacab BB 5 10
Betacab CC 2 20
Betacab DD - 25
Canutility AA 8 15
Canutility CC - 19
Przykład Wynik
firstsortedvalue (Product, UnitPrice)

BB, czyli Product z najniższą wartością w kolumnie UnitPrice(9).

firstsortedvalue (Product, UnitPrice, 2)

BB, czyli Product z drugą najniższą wartością w kolumnie UnitPrice(10).

firstsortedvalue (Customer, -UnitPrice, 2)

Betacab, czyli Customer, który ma Product z drugą najwyższą wartością w kolumnie UnitPrice(20).

firstsortedvalue (Customer, UnitPrice, 3)

NULL, ponieważ są dwie wartości w kolumnie Customer (Astrida i Canutility) z tą samą wartością rank (trzecia najniższa wartość) w kolumnie UnitPrice(15).

Aby zapewnić, że nie zostaną niespodziewanie zwrócone wartości null, należy skorzystać z kwalifikatora distinct.

firstsortedvalue (Customer, -UnitPrice*UnitSales, 2)

Canutility, czyli Customer z drugą najwyższą wartością w kolumnie UnitPrice pomnożoną przez wartość w kolumnie UnitSales (120).

Dane zastosowane w przykładach:

ProductData:

LOAD * inline [

Customer|Product|UnitSales|UnitPrice

Astrida|AA|4|16

Astrida|AA|10|15

Astrida|BB|9|9

Betacab|BB|5|10

Betacab|CC|2|20

Betacab|DD||25

Canutility|AA|8|15

Canutility|CC||19

] (delimiter is '|');