FirstSortedValue - chart function
FirstSortedValue() returns the value of one field based on the sorted values of another field. For example, the product with the lowest unit price.
Syntax:
FirstSortedValue([{SetExpression}] [DISTINCT] [TOTAL [<fld {,fld}>]] value, sort_weight [,rank])
Return data type: dual
Arguments:
Argument | Description |
---|---|
value | Output field. The function returns the value from the field specified in value associated with the result of sorting the sort_weight field, taking into account rank, if specified. If more than one resulting value shares the same sort_weight for the specified rank, the function returns NULL. |
sort_weight |
Input field. The expression containing the data to be sorted. The first (lowest) value of sort_weight is found, from which the corresponding value of the value expression is determined. If you place a minus sign in front of sort_weight, the function returns the last (highest) sorted value instead. |
rank |
By stating a rank "n" larger than 1, you get the nth sorted value. |
SetExpression | By default, the aggregation function will aggregate over the set of possible records defined by the selection. An alternative set of records can be defined by a set analysis expression. |
DISTINCT | If the word DISTINCT occurs before the function arguments, duplicates resulting from the evaluation of the function arguments are disregarded. |
TOTAL |
If the word TOTAL occurs before the function arguments, the calculation is made over all possible values given the current selections, and not just those that pertain to the current dimensional value, that is, it disregards the chart dimensions. The TOTAL qualifier may be followed by a list of one or more field names within angle brackets <fld>. These field names should be a subset of the chart dimension variables. |
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 |
Example | Result |
---|---|
firstsortedvalue (Product, UnitPrice) |
BB, which is the Productwith the lowest UnitPrice(9). |
firstsortedvalue (Product, UnitPrice, 2) |
BB, which is the Productwith the second-lowest UnitPrice(10). |
firstsortedvalue (Customer, -UnitPrice, 2) |
Betacab, which is the Customerwith the Product that has second-highest UnitPrice(20). |
firstsortedvalue (Customer, UnitPrice, 3) |
NULL, because there are two values of Customer (A and C) with the samerank (third-lowest) UnitPrice(15). |
firstsortedvalue (Customer, -UnitPrice*UnitSales, 2) |
Astrida, which is the Customer with the second-highest sales order value UnitPrice multiplied by UnitSales (120). |
Data used in examples:
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 '|');
Did this page help you?
If you find any issues with this page or its content – a typo, a missing step, or a technical error – let us know how we can improve!