# Max - chart function

Max() finds the highest value of the aggregated data. By specifying a rank n, the nth highest value can be found.

Tip noteYou might also want to look at FirstSortedValue and RangeMax, which have similar functionality to the Max function.

Syntax:

Max([{SetExpression}] [TOTAL [&lt;fld {,fld}&gt;]] expr [,rank])

Return data type: numeric

Arguments:

Arguments

| Argument | Description |
| --- | --- |
| expr | The expression or field containing the data to be measured. |
| rank | The default value of rank is 1, which corresponds to the highest value.<br>By specifying rank as 2, the second highest value is returned. If rank is 3, the third highest value is returned, and so on. |
| SetExpression | By default, the aggregation function<br>will aggregate over the set of possible records defined by the selection.<br>An alternative set of records can be defined by a set analysis<br>expression. |
| TOTAL | If the word<br>TOTAL occurs before the function<br>arguments, the calculation is made over all possible values given<br>the current selections, and not just those that pertain to the current dimensional value, that is, it disregards the chart dimensions.<br><br>By using TOTAL [&lt;fld {.fld}&gt;], where the TOTAL qualifier is followed by a list of one or more field names as a subset of the chart dimension variables, you create a subset of the total possible values.<br><br>[Defining the aggregation scope](https://help.qlik.com/en-US/sense/May2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm) |

Examples and results:

Data

| 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 |

Examples and results

| Examples | Results |
| --- | --- |
| `<br>Max(UnitSales)<br>` | 10, because this is the highest value in `UnitSales`. |
| The value of an order is calculated from the number of units sold in (`UnitSales`) multiplied by the unit price.<br><br>`Max(UnitSales*UnitPrice)` | 150, because this is the highest value of the result of calculating all possible values of (`UnitSales`)\*(`UnitPrice`). |
| `Max(UnitSales, 2)` | 9, which is the second highest value. |
| `Max(TOTAL UnitSales)` | 10, because the TOTAL qualifier means the highest possible value is found, disregarding the chart dimensions. For a chart with Customer as dimension, the TOTAL qualifier will ensure the maximum value across the full dataset is returned, instead of the maximum UnitSales for each customer. |
| Make the selection `  Customer B `.<br><br>`<br>Max({1} TOTAL UnitSales)<br>` | 10, independent of the selection made, because the Set Analysis expression {1} defines the set of records to be evaluated as ALL, no matter what selection is made. |

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 '|');`

## Learn more

* [FirstSortedValue - chart function](https://help.qlik.com/en-US/sense/May2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/BasicAggregationFunctions/firstsortedvalue.htm)
* [RangeMax - script and chart function](https://help.qlik.com/en-US/sense/May2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/RangeFunctions/rangemax.htm)
* [Set analysis](https://help.qlik.com/en-US/sense/May2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)
* [Defining the aggregation scope](https://help.qlik.com/en-US/sense/May2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm)