# FirstSortedValue — funkcja skryptu

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.

Sortowane wartości są iterowane po liczbie rekordów (zgodnie z definicją z klauzuli group by) lub agregowane w pełnym zestawie danych, jeśli nie określono klauzuli group by.

Składnia:

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

Typ zwracanych danych: podwójny

Argumenty:

Argumenty FirstSortedValue

| Argument | Opis |
| --- | --- |
| value Expression | Funkcja znajduje wartość wyrażenia value odpowiadającą wynikowi sortowania argumentu sort\_weight. |
| sort-weight Expression | 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 Expression | Podanie dla parametru rank wartości „n” większej niż 1 spowoduje zwrócenie n-tej wartości w kolejności sortowania. |
| 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. |

Przykłady i wyniki:

Dodaj przykładowy skrypt do dokumentu i uruchom go. Następnie dodaj do arkusza w swoim dokumencie co najmniej pola wyszczególnione w kolumnie wyników, aby wyświetlić wynik.

Przykład 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;
`

Wyniki przykładu 1

| Pole wynikowe (Customer) | Wartość wynikowa (MyProductWithSmallestOrderByCustomer) |
| --- | --- |
| Astrida | CC |
| Betacab | AA |
| Canutility | AA |
| Divadip | DD |

Funkcja sortuje wartości UnitSales od najmniejszej do największej, wyszukując wartość Customer z najmniejszą wartością UnitSales, co odpowiada najmniejszemu zamówieniu.

Ponieważ CC odpowiada najmniejszemu zamówieniu (wartość UnitSales=2) dla Astrida klienta. AA odpowiada najmniejszemu zamówieniu (4) dla Betacab klienta, AA odpowiada najmniejszemu zamówieniu (8) dla Canutility klienta, a DD odpowiada najmniejszemu zamówieniu (10) dla Divadip klienta.

Przykład 2:

Zakładając, że tabela Temp została załadowana jak w poprzednim przykładzie:

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

Wyniki przykładu 2

| Pole wynikowe (Customer) | Wartość wynikowa (MyProductWithLargestOrderByCustomer) |
| --- | --- |
| Astrida | AA |
| Betacab | DD |
| Canutility | CC |
| Divadip | - |

Argument sort\_weight poprzedza znak minus, dlatego funkcja sortuje wartości od największych.

Ponieważ AA odpowiada największemu zamówieniu (wartość UnitSales:18) dla Astrida klienta, DD odpowiada największemu zamówieniu (12) dla Betacab klienta, a CC odpowiada największemu zamówieniu (13) dla Canutility klienta. Istnieją dwie identyczne wartości największego zamówienia (16) dla Divadip, klienta, w wyniku czego uzyskuje się wynik Null.

Przykład 3:

Zakładając, że tabela Temp została załadowana jak w poprzednim przykładzie:

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

Wyniki przykładu 3

| Pole wynikowe (Customer) | Wartość wynikowa (MyProductWithLargestOrderByCustomer) |
| --- | --- |
| Astrida | AA |
| Betacab | DD |
| Canutility | CC |
| Divadip | AA |

Sytuacja wygląda tak samo jak w poprzednim przykładzie — jedynym wyjątkiem jest użycie kwalifikatora distinct. Powoduje to zignorowanie powielonego wyniku Divadip, umożliwiając zwrot wartości innych niż Null.