# Max

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}] [DISTINCT] [TOTAL [&lt;fld {,fld}&gt;]] expr [,rank])

Return data type: numeric

Arguments:

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

* 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 &lt;fld&gt;. These field names should be a subset of the chart dimension variables.

  [Defining the aggregation scope](https://help.qlik.com/en-US/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/ChartFunctions/define-aggregation-scope.htm)

Examples:

Examples and results

| Example | Result |
| --- | --- |
| `Max(UnitSales)` | 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>`Max({1} TOTAL UnitSales)` | 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 '|');`

Example data in table form

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

## Learn more

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