报表样例

分组后重新排名即组内排名,就是对每一组的元素进行排名。如下图中可以看出东北,华北等地区的排名是在各自所在组内排名,两者的排名是不连续的。

制作如下图所示的排名报表: 排名 - 图1

制作方法

第一步 定义数据集

报表中的数据来自产品中自带的数据表“DEMO_ORDERDETAILS“。

新建复杂SQL数据集“订单统计”,SQL语句为:select DEMO_ORDERS.货主地区,DEMO_ORDERS.货主城市,DEMO_ORDERS.货主名称,DEMO_ORDERDETAILS.单价,DEMO_ORDERDETAILS.数量 from DEMO_ORDERS,DEMO_ORDERDETAILS where DEMO_ORDERS.订单ID=DEMO_ORDERDETAILS.订单ID 排名 - 图2

第二步 制作表样并定义表达式

绘制报表基本结构并定义基本表达式。 排名 - 图3

取数表达式如下:

A2:=订单统计.Group(货主地区,false)

B2:=订单统计.Group(货主城市,false)

C2:=订单统计.Sum(单价*数量)

第三步 排名设置

1.订单总价排名

在E2单元格写入表达式:=count(C2[`0]{C2>$C2})+1,该表达式是统计所有订单总价大于当前单元格订单总价的城市个数,然后加1,从而实现对订单总价排名的效果。

函数说明: C2[`0]:表示C2扩展的所有值。 C2>$C2:表示条件过滤比当前C2单元格的值大的值。 count():表示计算C2纵向扩展的所有值比当前单元格的大的值的数目,最大的则为 0,依次为 1……n ,+1 后就是排名(从 1 开始)。

2.区内排名

在D2单元格写入表达式:=count(C2[A2]{C2>$C2})+1,该表达式是统计A2单元格扩展后,某一区域内的订单总价大于当前单元格订单总价的城市个数,然后加1,从而实现对订单总价多级排名的效果。

函数说明: C2[A2]:表示A2单元格扩展范围内的C2的值。 C2>$C2:表示条件过滤比当前C2单元格的值大的值。 count():表示计算C2纵向扩展的组内的比当前单元格的大的值的数目,最大的则为 0,依次为 1……n ,+1 后就是排名(从 1 开始)。

比较D2和E2单元格的表达式,可以看到它们的区别仅仅在于扩展格范围的不同,D2单元格计算的是A2单元格扩展范围内的排名,所以为区内排名;而E2单元格计算的是根格下的扩展区域内的排名,所以为总价排名。

第四步 设置显示格式和单元格格式

1)设置C2单元格的显示格式为¥#,##0.00。 排名 - 图4

2)设置C2单元格的水平对齐方式为“靠右”,并设置缩进为5。 排名 - 图5

第五步 保存预览

点击设计界面左上角的【预览】按钮对报表模板进行保存和查看。

预览页面: 排名 - 图6