FirstSortedValue - diagramfunktion
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.
Syntax:
FirstSortedValue([{SetExpression}] [DISTINCT] [TOTAL [<fld {,fld}>]] value, sort_weight [,rank])
Returnerad datatyp: dual
Argument:
Argument | Beskrivning |
---|---|
value | Utdatafält. Funktionen finner värdet av uttrycket value som motsvarar resultatet vid sortering av sort_weight. |
sort_weight |
Indatafält. 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 |
Genom att ange rank "n" som är större än 1 får du det n:te sorterade värdet. |
SetExpression | Som standard kommer aggregeringsfunktionen att aggregera över den uppsättning möjliga poster som definierats av urvalet. En alternativ uppsättning poster kan definieras med ett uttryck för set-analys. |
DISTINCT | Om predikatet DISTINCT förekommer framför funktionsargumenten ignoreras alla dubbletter som evaluerats utifrån funktionsargumenten. |
TOTAL |
Om ordet TOTAL står före funktionsargumenten görs beräkningen över alla valbara värden givet de aktuella valen, och inte bara sådana som rör det aktuella dimensionsvärdet, det vill säga att diagramdimensionerna ignoreras. Genom att använda TOTAL [<fld {.fld}>], där kvalificeraren TOTAL följs av en lista med ett eller flera fältnamn som en delmängd av diagramdimensionens variabler, skapar du en delmängd av de totala möjliga värdena. |
Exempel och resultat:
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 |
Exempel | Resultat |
---|---|
firstsortedvalue (Product, UnitPrice) |
BB, som är en Product med det lägsta UnitPrice(9). |
firstsortedvalue (Product, UnitPrice, 2) |
BB, som är en Product med det näst lägsta UnitPrice(10). |
firstsortedvalue (Customer, -UnitPrice, 2) |
Betacab, som är en Customermed den Product som har det nästa högsta UnitPrice(20). |
firstsortedvalue (Customer, UnitPrice, 3) |
NULL, eftersom det finns två värden för Customer (Astrida och Canutility) med sammarank (tredje lägsta) UnitPrice(15). Använd kvalificeraren distinct för att se till att det inte uppstår oväntade null-resultat. |
firstsortedvalue (Customer, -UnitPrice*UnitSales, 2) |
Canutility, vilket är Customer med det näst högsta säljordervärdet UnitPrice multiplicerat med UnitSales (120). |
Data som används i exempel:
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 '|');