# HRank- 图表函数

HRank() 用于对表达式求值，并将结果与包含透视表的当前行段的其他行的结果进行比较。然后，此函数返回段内当前行的排行。

语法：

HRank([ TOTAL ] expr [ , mode [, fmt ] ])

返回数据类型： 双

信息注释该函数只在透视表中起作用。在全部其他类别的图表中，它返回 NULL。

参数：

参数

| 参数 | 描述 |
| --- | --- |
| expr | 表达式或字段包含要度量的数据。 |
| mode | 指定函数结果的数字呈现形式。 |
| fmt | 指定函数结果的文本呈现形式。 |
| TOTAL | 如果图表是一维或如果表达式前面有 TOTAL 限定符，则该函数用于评估整列。 如果表格或表格等同物有多个垂直维度，当前列段数据将只包括值与所有维度列的当前行相同的行，但按内部字段排序显示最后维度的列除外。<br><br>[定义聚合范围](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm) |

如果透视表是一维，或者如果表达式前面有一个 total 限定词，则当前行片断总是与整行相等。如果透视表有多个水平维度，则当前行片断将只包括值与所有维度行中当前列相同的列，除显示字段排序间上一次水平维度的行之外。

排名将会以双值的方式返回，当每一列拥有一个唯一排名的情况下将会是一个介与 1 和当前行片断列数之间的整数。

当多列共享同一个排行时，文本和数字呈现形式可使用 mode 和 format 参数进行控制。

第二个参数 mode 用于指定函数结果的数字呈现形式：

modemode 示例

| 值 | 描述 |
| --- | --- |
| 0（默认） | 如果共享组中的全部排行处在整个排行中间值的下半部分，全部列都获得共享组的最低排行。<br><br>如果共享组中的全部排行处在整个排行中间值的上半部分，全部列都获得共享组的最高排行。<br><br>如果共享组中的排行跨越整个排行的中间值，全部行都获得整个列片断中最高和最低排行的平均值。 |
| 1 | 该组中全部列的最低排行。 |
| 2 | 该组中全部列的平均排行。 |
| 3 | 该组中全部列的最高排行。 |
| 4 | 第一列的最低排行，然后该组中每一列都依次提高一位。 |

第三个参数 format 用于指定函数结果的文本呈现形式：

formatformat 示例

| 值 | 描述 |
| --- | --- |
| 0（默认） | 在组的全部列中的低值&' - '&高值（如 3 - 4）。 |
| 1 | 该组中全部列的低值。 |
| 2 | 第一列的低值，以后各列都为空白。 |

mode 4 和 format 2 的列顺序由图表维度的排序决定。

示例：

`HRank( sum( 
 Sales ))` `HRank( sum( 
 Sales ), 2 )` `HRank( sum( 
 Sales ), 0, 1 )`