互联网服务

使用函数进行汇总,平均,最值,前几名,后几名计算

1.1. Cognos中的汇总函数

total ( [ distinct ] 表达式 [ auto ] )

total ( [ distinct ] 表达式 for [ all|any ] 表达式 { , 表达式 } )

total ( [ distinct ] 表达式 for report )

返回选定数据项的合计值。Distinct 是与产品的较早版本兼容的替换表达式。

例如,下面的列表中,“整体 – 总计”中的汇总用的是cognos自身带有的总计功能,“表达式计算的汇总”是通过汇总函数total计算而来的。

对QUANTITY进行汇总计算的表达式如下:

total([QUANTITY] for report)

2.png

报表运行结果中,采用两种方法的汇总值是一样的:

1.2. Cognos中的平均函数

average ( [ distinct ] 表达式 [ auto ] )

average ( [ distinct ] 表达式 for [ all|any ] 表达式 { , 表达式 } )

average ( [ distinct ] 表达式 for report )

返回选定数据项的平均值。

例如,下面的列表中,“整体 – 平均值”中的平均值用的是cognos自身带有的计算均值的功能,“表达式计算的平均值”是通过最大值函数average计算而来的。

因为cognos自身的汇聚功能,所以计算平均值之前首先要对数据进行汇总才能使用平均值函数,如下对QUANTITY的平均值计算表达式为:

average(total([QUANTITY]) for report)

报表运行结果中,采用两种方法的平均值是一样的:

1.3. Cognos中的最大值函数

maximum ( [ distinct ] 表达式 [ auto ] )

maximum ( [ distinct ] 表达式 for [ all|any ] 表达式 { , 表达式 } )

maximum ( [ distinct ] 表达式 for report )

返回选定数据项的最大值。

例如,下面的列表中,“整体 – 最大值”中的最大值用的是cognos自身带有的计算最大值的功能,“表达式计算的最大值”是通过最大值函数maximum计算而来的。

因为cognos自身的汇聚功能,所以计算最大值之前首先要对数据进行汇总才能使用最大值函数,如下对QUANTITY的最大值计算表达式为:

maximum(total([QUANTITY]) for report)

报表运行结果中,采用两种方法的最大值是一样的:

1.4. Cognos中的最小值函数

average ( [ distinct ] 表达式 [ auto ] )

average ( [ distinct ] 表达式 for [ all|any ] 表达式 { , 表达式 } )

average ( [ distinct ] 表达式 for report )

返回选定数据项的平均值。

例如,下面的列表中,“整体 – 最小值”中的最小值用的是cognos自身带有的计算最小值的功能,“表达式计算的最小值”是通过最小值函数minimum计算而来的。

因为cognos自身的汇聚功能,所以计算最小值之前首先要对数据进行汇总才能使用最小值函数,如下对QUANTITY的最小值计算表达式为:

minimum(total([QUANTITY]) for report)

报表运行结果中,采用两种方法的最小值是一样的:

1.5. 取得前几名

topCount ( 集表达式 , 索引表达式 , 数字型表达式 )

根据在“集表达式”的每个成员中算得的“数字型表达式”值对集进行排序,然后返回排名前“索引表达式”位的成员。

例如取得QUANTITY前两名的PRODUCT_LINE的数据:

则数据项PRODUCT_LINE的表达式如下:

topCount([销售].[产品].[PRODUCT_LINE_EN],2,[销售].[销售].[QUANTITY])

查询的结果中只有QUANTITY排名前两名的数据:

取得前几名也可以使用rank()函数,该函数是对某个数据项进行排序,只要在过滤中使用rank([数据项])<要取的前几名+1即可。

1.6. 取得后几名

bottomCount ( 集表达式, 索引表达式 , 数字型表达式 )

根据在“集合表达式”的每个成员中算得的“数字型表式”值对集合进行排序,然后返回排名最末“索引表达式”位的成员。

例如取得QUANTITY后两名的PRODUCT_LINE的数据:

则数据项PRODUCT_LINE的表达式如下:

bottomCount([销售].[产品].[PRODUCT_LINE_EN],2,[销售].[销售].[QUANTITY])

查询的结果中只有QUANTITY排名后两名的数据:

1.7. 列表、交叉表的百分率合计

在制作报表合计时,计算百分率常常会遇到问题:A/B的合计应该是30/200=15%,而报表经常会自动将前面两个百分比相加10%+20%=30%,如下:

1.7.1. 列表的处理方法

选中百分率汇总单元格,将聚合函数和累计聚合函数设置为自动即可。

1.7.2. 交叉表的处理方法

交叉表同列表的处理方法不同,需要在表达式中使用aggregate函数,需要将合计的表达式改写成aggregate(currentMeasure within detail[数据项])即可。

参与13

12 同行回答

tjwcj tjwcj 软件实施顾问 飞创
多谢了,O(∩_∩)O~显示全部
多谢了,O(∩_∩)O~ 收起
软件开发 · 2013-09-24
浏览928
tjwcj tjwcj 软件实施顾问 飞创
谢谢分享显示全部
谢谢分享 收起
软件开发 · 2013-09-17
浏览924
victory victory 软件开发工程师 昊天科技
请问 楼主 topcount()后,在最下边求总计为什么报错?显示全部
请问 楼主 topcount()后,在最下边求总计为什么报错? 收起
互联网服务 · 2013-08-06
浏览1023
djgloy2004 djgloy2004 软件开发工程师 aa
谢谢分享。显示全部
谢谢分享。 收起
互联网服务 · 2013-05-22
浏览1029
sdxrh2010 sdxrh2010 BI开发工程师 北京银丰
谢谢分享。显示全部
谢谢分享。 收起
金融其它 · 2013-05-21
浏览1050
wh1978 wh1978 软件开发工程师 whua
谢谢楼主显示全部
谢谢楼主 收起
互联网服务 · 2013-04-27
浏览1030
ray_zhaol ray_zhaol 软件开发工程师 龙创腾达科技有限公司
学习了。正好用上。显示全部
学习了。正好用上。 收起
互联网服务 · 2013-02-18
浏览1040
花泽萱 花泽萱 BI开发工程师 东南融通
学习了,谢谢楼主的经验分享显示全部
学习了,谢谢楼主的经验分享 收起
IT分销/经销 · 2012-11-12
浏览1022
liubo20120817 liubo20120817 BI开发工程师 上海
解决了我的问题  谢谢啦显示全部
解决了我的问题  谢谢啦 收起
轨道交通 · 2012-10-25
浏览1026
369873158 369873158 技术经理 Infosys
回复 3# wenshao600 for 是对total指定一个范围,for report是对报表中这一列的所有数据进行汇总显示全部
回复 3# wenshao600
for 是对total指定一个范围,for report是对报表中这一列的所有数据进行汇总 收起
互联网服务 · 2012-10-23
浏览997

提问者

369873158
369873158 0 0 3
技术经理 Infosys
擅长领域: 大数据商业智能cognos
评论916

问题状态

  • 发布时间:2012-09-24
  • 关注会员:1 人
  • 问题浏览:7351
  • 最近回答:2013-09-24
  • X社区推广