按段分组报表制作

需求说明

在报表对数据进行汇总统计时,通常是按照某个字段进行分组,比如按地区、类别等字段分组后对其他信息进行汇总,但有一种分组模式为不规则分组,其分组是根据数据的值段来分的,例如按照分数段、年龄段、按时间段等,属于某个值区间的记录归到一个组里如下图所示:

在上图中我们可以看到,报表根据订购日期将订单数量和订单金额分成四组,分别统计 "2012 年圣诞前"、“2012 年圣诞–2013 年国庆”、“2013 年国庆–2014 年五一”、"2014 年五一以后" 四个时间段的订单。

这种按值段进行分组的分组报表被称为按段分组,下面我们介绍一下润乾报表中如何实现该报表。

定义数据集

ds1:SELECT 订单. 订购日期, 订单明细. 数量, 订单明细. 单价, 订单明细. 折扣, 客户. 地区 FROM 订单明细, 订单, 客户 WHERE 客户. 客户 ID = 订单. 客户 ID AND 订单. 订单 ID = 订单明细. 订单

增加参数

报表中按时间段进行分组,实际应用中时间段通常是动态变化的,动态变化的时间段可以通过参数动态控制,所以此处增加参数进行控制:

参数名:arg1,数据类型:日期组,值表达式:2012 -12 -25, 2013 -10 -1, 2014 -5-1

参数名:arg2,数据类型:字符串组,值表达式:2012 年圣诞前, 2012 年圣诞–2013 年国庆, 2013 年国庆–2014 年五一, 2014 年五一以后

arg1 参数用于控制按段分组时的日期段,arg2 用于设置报表展示时单元格的显示信息,稍后做详细介绍

制作报表

报表设计模板如图:

A3:=ds1.group(地区; 地区:1),按照地区进行分组

B3:=ds1.count(),进行计数操作,统计订单数量

C3:=ds1.sum( 单价数量 ),对订单金额汇总,注意,数据库中并没有订单金额字段,订单金额可通过单价数量计算出,润乾中支持 sum 前先对字段进行相应操作,并设置 C3 单元格显示格式为:¥#0.00

B1:表达式为 =ds1.plot(订购日期, arg1),此处使用数据集的 plot 函数(按段分组),第一个参数(订购日期)为要分组字段,第二个参数(arg1)为分段区间,函数主要功能是根据订购日期字段将数据集按照 arg1 参数指定的分段区间划分到不同的组内,该函数返回值为整数组,代表记录按值段分组后组的顺序,如 list(0,1,2,3) 代表第一组,第二组,第三组,第四组,具体函数说明见附注,将单元格扩展方向改成横向,此时报表预览展示效果如下:

可以看到,B1 单元格返回的是 0,1,2,3 这种整数,所以要对其设置显示值表达式以达到显示效果,这里就用到了之前定义的 arg2 参数,在 B1 单元格显示值表达式中写入:map(to(0,count(arg1)),arg2),map 函数主要用于显示值表达式映射,该函数有两个参数均为 list,由于 B1 单元格的真实值为 0,1,2 这种整数,所以 map 函数第一个参数为 0 到分段区间个数的扩展,第二个参数会按照顺序映射返回到显示值属性中,这样 B1 单元格就能按照 arg2 参数中设置好的内容进行显示。而分段区间和显示值均是通过参数传递,所以此报表的分段信息可以通过程序控制参数达到动态效果。

根据实际要求设置报表样式,最终效果如下:

附注:

plot 函数说明:

根据数据值段进行分组,俗称“按段分组”

语法:

datasetName.plot(valueExp,listExp{,filterExp})

参数:

valueExp 用于分组的值表达式

listExp 数据值段列表,同 valueExp 数据类型相同的数组,要求其中元素从小到大排列

filterExp 过滤表达式

返回值:

整数组,代表记录按值段分组后组的顺序,如 list(0,1,2,3) 代表第一组,第二组,第三组,第四组。因此,定义完单元格数据值表达式后还需要定义显示值表达式,比如第一组代表不及格,第二组代表及格等等

选项:

@r 是否为根数据集表达式

@c 表示与元素比较时数据值段临界值只包含在第 1 个碰到的区间,相同的临界值不包含在第 2 个碰到的区间。缺省数据值段临界值只包含在第 2 个碰到的区间。

@z 表示 listExp 返回的数组按从大到小排列; 缺省为从小到大排列

示例:

例 1:ds1.plot(成绩,list(60,80,90) ,科目 ==“数学”)

返回值为 list(0,1,2,3) 对数据集 ds1 过滤出科目等于数学的记录按成绩段进行分组,60 分以下不包含 60 分、60-79,80-89,90 分及 90 分以上等四组。同时定义显示值表达式为:map(list(0,1,2,3),list(不及格, 及格, 良好, 优秀))

例 2:[email protected](成绩,arg1)

其中 arg1 为参数,其数据类型是整数组,其值为 "60,70,80,90" 。显示值表达式为:map(to(0,count(arg1)),arg2),其中 arg2 为字符串组,其值为 {“不及格”,“及格”,“中”,“良好”,“优秀”}。 本例通过参数动态控制分组值段以及结果组的显示值。

原文地址:https://www.cnblogs.com/xiaohuihui-11/p/12041813.html

时间: 2024-10-04 07:11:58

按段分组报表制作的相关文章

非常规统计报表之制作按段分组报表的新办法

报表开发中,经常会碰到一些需要进行非常规统计的报表,固定分组.可重复分组.组内排序,还包括跨行组计算的报表,甚至有些报表本身无数据来源.以及需要对数据源再计算.这些报表本身具备一定的特殊性,使用常规方法往往难于实现. 对于按段分组报表,各段之间可以有重复,也就可能出现按段可重复的分组报表.集算报表在完成这类特殊统计报表时比较简单,这里通过一个实例说明实现过程. 报表说明 根据员工基本信息表按年龄统计各年龄段区间的人数.奖金等汇总情况.报表样式如下: 这里"30-40岁"和"3

润乾集算报表非常规统计之按段分组

报表开发中,经常会碰到一些需要进行非常规统计的报表,固定分组.可重复分组.组内排序,还包括跨行组计算的报表,甚至有些报表本身无数据来源.以及需要对数据源再计算.这些报表本身具备一定的特殊性,使用常规方法往往难于实现. 对于按段分组报表,各段之间可以有重复,也就可能出现按段可重复的分组报表.集算报表在完成这类特殊统计报表时比较简单,这里通过一个实例说明实现过程. 报表说明 根据员工基本信息表按年龄统计各年龄段区间的人数.奖金等汇总情况.报表样式如下: 这里"30-40岁"和"3

润乾报表实现预置分组报表及改进

预置分组报表在报表开发中比较常见而且比较棘手.所谓预置分组报表是指分组没有规律,可能是分组范围没有规律,也可能分组顺序没有规律,需要报表开发人员事先预置(固定)分组的报表.常见的预置分组报表一般有如下三类:按段分组报表.固定次序分组报表.多层固定次序分组报表.下面分别看一下这几类报表的特点,以及润乾报表的实现方法. 按段分组报表 这类报表的特点是分段的区间并未在数据库中存储需要根据相应字段(如年龄.日期)计算,并且每个分段可能会发生变化(如每年节假日所在日期可能不同),经常由用户随意指定.如:统

使用多级分组报表展现分类数据

当你走进便利店,你会发现所有的商品都是按类排放的,分类排放可以帮助您快速找到同类商品,也可以快速发现你想要的商品. 当去饭店吃饭的时候,菜单上的菜也是按类别排列的,比如凉菜,热菜,汤类,主食等.点菜时你会直接翻到你想要的那一类菜单,点菜. -- 通过上面场景,大家就理解分组呈现数据的好处了,分组可以帮助快速定位,方便数据查找,汇总,分析数据趋势等.有时候分析某一单一的商品并无价值,所以采用分组是最常见也是最简单的数据分析手段. 分组报表则是在报表中使用分组功能,是工作中最常用的报表类型,分组功能

如何制作动态层分组报表

润乾报表提供了单元格同值合并的功能,可以实现动态层次的分组报表.这里通过一个例子来说明使用过程. 目标报表: 需要根据参数动态传递分组字段,按不同维度汇总订单运货费.如参数输入“货主地区, 货主城市”,显示的报表效果如下: 当参数输入“货主地区, 运货商, 货主城市”时,报表显示如下: 以下为具体实现步骤: 1.连接数据源 连接润乾报表设计器自带 DEMO 数据源: 2.设置报表参数 新建报表,并设置报表参数如下: 其中,gnum 为分组字段数:gname 为分组字段名,多个字段使用逗号分隔 3

第二篇:Power BI数据可视化之基于网页数据的报表制作(经典级示例)

前言 报表制作流程的第一步显然是从各个数据源导入数据,Power BI能从很多种数据源导入数据:如Excel,CSV,XML,以及各类数据库(SQL Server,Oracle,My SQL等),两大主流开源平台(Hadoop,Spark)等等.本文篇幅所限,无法一一说明,仅就网页获取数据的方式进行讲解(其他方式大同小异). 然后本文将在Power BI后台工作区(下简称后台区)对获取到的数据集进行塑形.所谓塑形就是确定数据集的列名以及数据类型,还有进行一些基本数据清洗转换工作,以保证Power

润乾报表实现可重复分组报表及改进

可重复分组报表是报表开发中比较常见和麻烦的任务.可重复分组报表是指同一记录出现在不同的分组中被重复统计,常见的可重复分组报表有两类:一类是分组区间有交集,如:统计年龄段在20-30岁.25-35岁.30-40岁之间的用户数量:另外一类是分组区间有包含关系,如:统计各地区以及该地区主要城市的汇总数据,"华北,其中北京:华东,其中上海--". 下面通过两个实例来看一下润乾报表的实现过程. 实例一 根据员工基本信息表按年龄统计各年龄段区间的人数.奖金等汇总情况.报表样式如下: 这里"

机房收费系统(VB.NET)——超详细的报表制作过程

之前做机房收费系统用的报表是Grid++Report,这次VB.NET重构中用到了VisualStudio自带的报表控件.刚开始当然对这块功能很不熟悉,不过探究了一段时间后还是把它做出来了. 下面把在VisualStudio(我用的是VisualStudio2013,如果与您使用的版本不同,过程中如有不符还请考虑实际情况)中制作报表的过程尽可能详细地记录下来,供初学者学习参考. 做事要有全局观,先看一下成品,做好的报表如下图: 其实能够达到这样的效果需要做两方面的工作:添加报表控件ReportV

可重复分组报表

可重复分组报表也在报表开发中比较常见和麻烦的任务.可重复分组报表是指同一记录出现在不同的分组中被重复统计,常见的可重复分组报表有两类:一类是分组区间有交集,如:统计年龄段在20-30岁.25-35岁.30-40岁之间的用户数量:另外一类是分组区间有包含关系,如:统计各地区以及该地区主要城市的汇总数据,"华北,其中北京:华东,其中上海--". 这类报表通过报表工具往往不易实现,即使实现也经常会伴随着报表难于开发维护.性能不高等问题. 通过集算器可以很好解决这个问题,这里通过两个例子来说明