Cognos函数(十七) - 排名函数:rank

这回我们介绍下rank这个函数,是用来排名的,比较常用

1. 官方定义

在ReportStudio中查看函数的时候,会发现有2个rank函数,他们的语法规则不一样

Cognos函数(十七) - 排名函数:rank_第1张图片

rank ( 表达式 [ ASC|DESC ] { , 表达式 [ ASC|DESC ] } [ at 表达式 { , 表达式 } ] [ <for 选项> ] [ prefilter ] )rank ( [ distinct ] 表达式 [ ASC|DESC ] { , 表达式 [ ASC|DESC ] } [ <for 选项>] [ prefilter ] )<for 选项> ::= for 表达式 { , 表达式 }|for report|auto
返回选定数据项的排名值。排序顺序为可选;在默认情况下,采用降序(DESC)。如果两个或更多行排名相同,那么排名值的序列中会有一个缺值(也称为 Olympic 排名)。“<for 选项>”定义函数的作用域。“at”选项定义聚合级别,只能在关系数据源上下文中使用。Distinct 是与产品的较早版本兼容的替换表达式。空值排名最末。此函数出现在“GO 数据仓库(分析)”数据包中的“2005 年排名前 10 位的零售商”示样报表中。

Cognos函数(十七) - 排名函数:rank_第2张图片

Cognos函数(十七) - 排名函数:rank_第3张图片

rank ( 数字型表达式 [ ASC|DESC ] [ tuple 成员表达式 { , 成员表达式 } ] within set 集表达式 )
返回选定数据项的排名值。返回的排名类型(Olympic、密集或序列)取决于数据源。排序顺序是可选的;默认情况下,假定为 DESC。
示例:rank ( [gosales].[销售额度量].[数量] tuple [gosales].[员工].[].[部门] -> [西部] within set children ( [gosales].[员工].[].[员工] ) )

个人认为,汇总下的rank是用于普通模型,就是关系模型的那种,

成员汇总下的rank用于DMR模型,就是维度建模的那种(没有特殊操作的话,维度建模也可以使用汇总下的rank)

2. 实例

2.1 普通排名

Cognos函数(十七) - 排名函数:rank_第4张图片

Cognos函数(十七) - 排名函数:rank_第5张图片

运行下

Cognos函数(十七) - 排名函数:rank_第6张图片

rank ([数量]) : 所有的产品类型一起降序排名

rank ([数量] for [产品系列]) : 在产品系列组内进行排名

2.2 按层级排名

对于level和siblings可以参考之前的博客


Cognos函数(十六) - children & level & siblings


Cognos函数(十七) - 排名函数:rank_第7张图片

Cognos函数(十七) - 排名函数:rank_第8张图片

Cognos函数(十七) - 排名函数:rank_第9张图片

在排名中,还有1个需要注意的问题是

1. 为Null的数据

2. 数据相同的话会使用同一个排名,排名会有断痕(忘记咋描述了)


你可能感兴趣的:(函数,rank,Cognos,ReportStudio)