排名

阅读(2073) 标签: 排名,

本节将以一个排名报表为例,讲述根坐标表示法的概念和用法。

一个例子

先看一张最简单的排名报表

该表数据集为ds1

SELECT 订单.货主城市,订单明细.单价,订单明细.数量 FROM 订单,订单明细 WHERE 订单.订单ID = 订单明细.订单ID

A2单元格表达式为:=ds1.group(货主城市;货主城市:1)

B2单元格表达式为:=ds1.sum(单价*数量)

预览如下:

通常我们在做这种报表的时候是先将订单总价做一个排序,然后再订单总价编号,将编号做为排名,而润乾报表在这里引入了根坐标表示法,参见:根坐标表示法 。可以轻松实现排序功能。

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

下面我们把这个排名报表复杂化,看一下多级的排名如何实现,也就是下图所示的效果:

该报表在上一个报表的基础上增加了货主地区分组,统计排名时不光统计总的排名,还要统计每一地区内的排名,该如何做呢?

D4单元格输入表达式:=count(C2[A2]{C2>$C2})+1

此报表保存为12.8.1.rpx

该表达式是统计A2单元格扩展后某一区域内的订单总价大于当前单元格订单总价的城市个数,然后加一,从而实现对订单总价多级排名的效果。

根坐标表示法

描述:

报表有个首格(根格),报表中的扩展单元格是逐级扩展的,有主格、附属格的概念,呈树状的结构,而根格则是这棵树的根。如下图所示:

由此可以看出,单元格逐级扩展后实际形成了以根格(报表首格)为根的一棵树,报表中存在多片独立扩展,那么根上就长出多棵树,每一个可主动扩展的格子都是树上的一个节点,最末一级的不可扩展格则是节点上的叶子。而层次坐标相当于描述任意一个节点或者叶子到达根的路径

由于根格是客观存在的,而树上的所有节点都是由根格发展而来,因此前面介绍的层次坐标忽略了根节点的描述,下面我们加上根坐标的描述,把层次坐标重新表示一下:

表达式规则: 

cellx[`0, Lk:lk, Lk-1:lk-1,……L1:lk; `0, Tk:tk, Tk-1:tk-1,……T1:t1]

从上面的层次坐标可以看出,完整的层次坐标是从根上开始的,而`0 则代表根坐标。