FirstSortedValue - scriptfunctie
FirstSortedValue() retourneert de waarde van de uitdrukking die is opgegeven in value en die overeenkomt met het resultaat van het sorteren van het argument sort_weight, waarbij rekening wordt gehouden met rank, indien opgegeven. Als meer dan één uitkomst dezelfde sort_weight voor de opgegeven rank deelt, retourneert de functie NULL.
De gesorteerde waarden worden herhaald over een aantal records, zoals is vastgelegd door een group by-clausule, of geaggregeerd over een volledige gegevensverzameling als er geen group by-clausule is gedefinieerd.
Syntaxis:
Retourgegevenstypen: dual
Argumenten:
Argument | Beschrijving |
---|---|
value Expression | De functie vindt de waarde van de uitdrukking value die overeenkomt met het resultaat van de sortering sort_weight. |
sort-weight Expression | De uitdrukking die de gegevens bevat die moeten worden gesorteerd. De eerste (laagste) waarde van sort_weight wordt gevonden, op basis waarvan de overeenkomstige waarde van de uitdrukking value wordt bepaald. Als u een minteken vóór sort_weight plaatst, retourneert de functie de laatste (hoogste) gesorteerde waarde. |
rank Expression |
Door een rank "n" op te geven die groter is dan 1, krijgt u de n-de gesorteerde waarde. |
distinct |
Als het woord DISTINCT vóór de argumenten van de functie wordt geplaatst, worden duplicaten die het resultaat zijn van de evaluatie van de argumenten van de functie, genegeerd. |
Voorbeelden en resultaten:
Voeg het voorbeeldscript toe aan uw document en voer dit uit. Voeg vervolgens ten minste de velden die in de resultatenkolom staan aan een werkblad in ons document toe om het resultaat te bekijken.
Voorbeeld 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;
Resultaatveld (Customer) | Resultaatwaarde (MyProductWithSmallestOrderByCustomer) |
---|---|
Astrida | CC |
Betacab | AA |
Canutility | AA |
Divadip | DD |
De functie sorteert UnitSales van kleinst naar grootst, en zoekt daarbij de waarde van Customer met de kleinste waarde van UnitSales, de kleinste bestelling.
Omdat CC overeenkomst met de kleinste bestelling (waarde van UnitSales=2) voor klant Astrida. AA komt overeen met de kleinste bestelling (4) voor klant Betacab, AA komt overeen met de grootste bestelling (8) voor klant Canutility en DD komt overeen met de grootste bestelling (10) voor klant Divadip.
Voorbeeld 2:
Stel dat de tabel Temp is geladen zoals in het vorige voorbeeld:
LOAD Customer,FirstSortedValue(Product, -UnitSales) as MyProductWithLargestOrderByCustomer Resident Temp Group By Customer;
Resultaatveld (Customer) | Resultaatwaarde (MyProductWithLargestOrderByCustomer) |
---|---|
Astrida | AA |
Betacab | DD |
Canutility | CC |
Divadip | - |
Er staat een minteken voor het argument sort_weight, dus de functie sorteert de grootste eerst.
Omdat AA overeenkomt met de grootste bestelling (waarde van UnitSales:18) voor klant Astrida, DD overeenkomt met de grootste bestelling (12) voor klant Betacab en CC overeenkomt met de grootste bestelling (13) voor klant Canutility. Er zijn twee identieke waarden voor de grootste bestelling (16) voor klant Divadip, dus dit resulteert in een null-waarde.
Voorbeeld 3:
Stel dat de tabel Temp is geladen zoals in het vorige voorbeeld:
LOAD Customer,FirstSortedValue(distinct Product, -UnitSales) as MyProductWithSmallestOrderByCustomer Resident Temp Group By Customer;
Resultaatveld (Customer) | Resultaatwaarde (MyProductWithLargestOrderByCustomer) |
---|---|
Astrida | AA |
Betacab | DD |
Canutility | CC |
Divadip | AA |
Dit is hetzelfde als het vorige voorbeeld, behalve dat de kwalificatie distinct is gebruikt. Dit veroorzaakt een dubbel resultaat voor Divadip dat kan worden genegeerd, wat een null-waarde retourneert.