#
Rank - chart function

Rank() evaluates the rows of the chart in the expression, and for each row, displays the relative position of the value of the dimension evaluated in the expression. When evaluating the expression, the function compares the result with the result of the other rows containing the current column segment and returns the ranking of the current row within the segment.

For charts other than tables, the current column segment is defined as it appears in the chart's straight table equivalent.

Syntax:

Rank([TOTAL [<fld {, fld}>]] expr[, mode[, fmt]])

Return data type: dual

Arguments:

Argument | Description |
---|---|

expr | The expression or field containing the data to be measured. |

mode | Specifies the number representation of the function result. |

fmt | Specifies the text representation of the function result. |

TOTAL |
If the chart is one-dimensional, or if the expression is preceded by the TOTAL qualifier,the function is evaluated across the entire column. If the table or table equivalent has multiple vertical dimensions, the current column segment will include only rows with the same values as the current row in all dimension columns except for the column showing the last dimension in the inter-field sort order. The TOTAL qualifier may be followed by a list of one or more field names within
angle brackets |

The ranking is returned as a dual value, which in the case when each row has a unique ranking, is an integer between 1 and the number of rows in the current column segment.

In the case where several rows share the same ranking, the text and number representation can be controlled with the mode and fmt parameters.

###### mode

The second argument, mode, can take the following values:

Value | Description |
---|---|

0 (default) |
If all ranks within the sharing group fall on the low side of the middle value of the entire ranking, all rows get the lowest rank within the sharing group. If all ranks within the sharing group fall on the high side of the middle value of the entire ranking, all rows get the highest rank within the sharing group. If ranks within the sharing group span over the middle value of the entire ranking, all rows get the value corresponding to the average of the top and bottom ranking in the entire column segment. |

1 | Lowest rank on all rows. |

2 | Average rank on all rows. |

3 | Highest rank on all rows. |

4 | Lowest rank on first row, then incremented by one for each row. |

###### fmt

The third argument, fmt, can take the following values:

Value | Description |
---|---|

0 (default) | Low value - high value on all rows (for example 3 - 4). |

1 | Low value on all rows. |

2 | Low value on first row, blank on the following rows. |

The order of rows for mode 4 and fmt 2 is determined by the sort order of the chart dimensions.

Examples and results:

Create two charts from the dimensions

Examples | Results |
---|---|

Create a table with the dimensions |
The result depends on the sort order of the dimensions. If the table is sorted on If the table is sorted on |

Replace the dimension Customer with Product and add the measure |
This returns 1 on the first row on each column segment and leaves all other rows blank, because arguments |

**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|0|25

Canutility|AA|8|15

Canutility|CC|0|19

] (delimiter is '|');

Sales2013:

crosstable (Month, Sales) LOAD * inline [

Customer|Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec

Astrida|46|60|70|13|78|20|45|65|78|12|78|22

Betacab|65|56|22|79|12|56|45|24|32|78|55|15

Canutility|77|68|34|91|24|68|57|36|44|90|67|27

Divadip|57|36|44|90|67|27|57|68|47|90|80|94

] (delimiter is '|');