Gå till huvudinnehåll

FirstSortedValue - skriptfunktion

FirstSortedValue() returnerar värdet från det uttryck som har angetts i value som motsvarar resultatet av sorteringen av sort_weight-argumentet, exempelvis namnet på produkten med det lägsta enhetspriset. Det n:te värdet i sorteringsordningen kan anges i rank. Om fler än ett resultatvärde delar samma sort_weight för den angivna rank returnerar funktionen NULL. De sorterade värdena itereras över ett antal poster, enligt vad som definieras i en group by-sats, eller aggregerat över den fullständiga datauppsättningen om ingen group by-sats har definierats.

Syntax:  

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

Returnerad datatyp: dual

Argument:  

Argument
Argument Beskrivning
value Expression Funktionen finner värdet av uttrycket value som motsvarar resultatet vid sortering av sort_weight.
sort-weight Expression Uttrycket som innehåller data som ska sorteras. Det första (lägsta) värdet i sort_weight hittas, varifrån motsvarande värde i uttrycket value fastställs. Om du sätter ett minustecken framför sort_weight returnerar funktionen det sista (högsta) sorterade värdet i stället.
rank Expression

Genom att ange rank "n" som är större än 1 får du det n:te sorterade värdet.

distinct

Om predikatet DISTINCT förekommer framför funktionsargumenten ignoreras alla dubbletter som evaluerats utifrån funktionsargumenten.

Exempel och resultat:  

Lägg till exempelskriptet i appen och kör det. Lägg sedan till åtminstone de fält som listas i resultatkolumnen till ett ark i vår app för att se resultatet.

Om du vill få samma utseende som i resultatkolumnen nedan växlar du från automatisk till egen visning i egenskapspanelen under Sortering. Avmarkera sedan numerisk och alfabetisk sortering.

Skriptexempel
Exempel Resultat

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

Funktionen sorterar UnitSales från den minsta till den största, och söker efter värdet Customer med det minsta värdet för UnitSales, den minsta ordern.

Eftersom CC motsvarar den minsta ordern (värdet UnitSales = 2) för kunden Astrida. AA motsvarar den minsta ordern (4) för kunden Betacab, AA motsvarar den minsta ordern (8) för kunden Canutility, och DD motsvarar den minsta ordern (10) för kunden Divadip..

Givet att Temp-tabellen är laddad som i föregående exempel:

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

Customer MyProductWithLargestOrderByCustomer

Astrida AA

Betacab DD

Canutility CC

Divadip -

Argumentet sort_weight inleds med ett minustecken så att funktionen sorterar den största först.

Eftersom AA motsvarar den största ordern (värdet av UnitSales:18) för kunden Astrida, DD motsvarar den största ordern (12) för kunden Betacab och CC motsvarar den största ordern (13) för kunden Canutility. Det finns två identiska värden för den största ordern (16) för kunden Divadip, därför producerar detta ett null-resultat.

Givet att Temp-tabellen är laddad som i föregående exempel:

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

Customer MyProductWithLargestOrderByCustomer

Astrida AA

Betacab DD

Canutility CC

Divadip AA

Detta är samma som i föregående exempel, förutom att kvalificeraren distinct används. Detta gör att dubblettresultatet för Divadip ignoreras, så att ett icke-null-värde kan returneras.

Var den här sidan till hjälp för dig?

Om du hittar några fel på denna sida eller i innehållet – ett stavfel, ett steg som saknas eller ett tekniskt fel – berätta för oss så att vi kan blir bättre!