在快逸报表统计图中拼凑出”其他”项
在使用统计图的过程中,用户会有这样的需求,即将数量最多的若干项和数量较小的几项汇总生成的”其他”项一起生成统计图。如数据在数据库中是每个省份对应一条记录,而用户希望在统计图中实现显示对应数量最多的3个省份,然后把其他省份的数据汇总到一起,形成统计图中的”其他”项。
下面的例子演示如何在快逸报表中拼凑出其他项。
要实现上面需求最关键的就是在数据集中写sql语句,构造出需要的数据集效果。
第一步:连接数据源,查看数据构造形式。
点击菜单栏上的配置-数据源,连接到demo数据源然后增加一个数据集,把所有数据select出来,sql语句为:SELECT sum(订单.运货费) as 运货费,订单.货主地区 FROM 订单 group by 订单.货主地区 order by sum(订单.运货费) desc
这段sql的含义是按地区分组,汇总运货费,然后把数据按降序排序,得到的数据如下图所示:
第二步:取出运货费最多的三个地区。
对应的sql为:SELECT top 3 sum(订单.运货费) as 运货费,订单.货主地区 FROM 订单 group by 订单.货主地区 order by sum(订单.运货费) desc,这样的得到的数据如下图所示:
第三步:将其他地区的数据汇总到一起。
将其他省份的数据汇总到一起,对应的sql为:SELECt ‘其他’ as 地区 ,sum(运货费) as 运货费 from (SELECT top 5 sum(订单.运货费) as 运货费,订单.货主地区 FROM 订单 group by 订单.货主地区 order by sum(订单.运货费) asc)
这段的sql的含义为先查询出运货费最少的5个省份,然后对这5个省份进行汇总起名字为其他,对应的数据为:
第四步:把上面的两组数据汇总到一起,使用union的方式,汇总的sql为:
SELECT top 3 订单.货主地区 as 地区,sum(订单.运货费) as 运货费 FROM 订单 group by 订单.货主地区 order by sum(订单.运货费) desc union SELECt ‘其他’ as 地区 ,sum(运货费) as 运货费 from (SELECT top 5 sum(订单.运货费) as 运货费,订单.货主地区 FROM 订单 group by 订单.货主地区 order by sum(订单.运货费) asc)
数据集得到的结果集如下图所示:
这样数据集就构造好了。
第五步,制作报表和统计图。
制作一张报表,A1单元格的表达式为:ds1.select(地区),B1单元的表达式为ds1.运货费,然后如下图所示在报表A2单元格中添加一个统计图,此处采用三维饼状图,统计图的具体设置方式如下图所示:
在图形特性选项卡中设置图中显示数据为百分比,然后点击确定,浏览报表的数据,结果如下图所示:
这样就实现了在三维饼形图中实现取出对应数量最多的3个地区,然后把其他地区的数据汇总到一起,成为统计图中的”其他”项并一起显示在统计图中的需求。