# HRank- 图表函数

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

语法：

HRank([ total ] expression [ , mode [, format ] ])

返回数据类型： 双

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

参数：

* expression: 表达式或字段包含要度量的数据。

* mode: 指定函数结果的数字呈现形式。

* format: 指定函数结果的文本呈现形式。

* TOTAL: 如果在函数参数前面出现单词 TOTAL，则计算给出当前选择项的所有可能值，而不只是属于当前维度值的那些值，即它会忽略图表维度。 TOTAL 限定符后可能紧跟着一系列由尖括号括起来的一个或多个字段名 &lt;fld&gt;。这些字段名应该是图表维度变量的子集。

  [定义聚合范围](https://help.qlik.com/zh-CN/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/ChartFunctions/define-aggregation-scope.htm)

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

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

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

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

第二参数值

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

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

第三参数值

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

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

示例：

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