FirstSortedValue — funkcja skryptu
Funkcja FirstSortedValue() zwraca wartość z wyrażenia określonego w argumencie value, który odpowiada wynikowi sortowania argumentu sort_weight, na przykład nazwie produktu o najniższej cenie jednostkowej. N-ta wartość w kolejności sortowania może zostać określona w argumencie rank. 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:
Typ zwracanych danych: dual
Argumenty:
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 skrypt przykładowy do aplikacji i uruchom ją. Następnie dodaj do arkusza w swojej aplikacji co najmniej pola wyszczególnione w kolumnie wyników, aby wyświetlić wynik.
Aby uzyskać ten sam wygląd, jak w kolumnie wyników poniżej, w panelu właściwości w obszarze sortowania przełącz z wartości Autom. na Niestandardowe. Następnie usuń zaznaczenie sortowania liczbowego i alfabetycznego.
Przykład | Wynik |
---|---|
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 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. |
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; |
Customer 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. |
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; |
Customer 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. |