首页 > 其他 > 详细

集算器协助报表工具实现跨行运算

时间:2015-12-09 02:12:05      阅读:274      评论:0      收藏:0      [点我收藏+]

? 有些报表工具不直接支持跨行计算,需要用表脚本实现,非常麻烦,遇到多层分组的情况会更复杂。集算器支持有序计算,可以弥补这一不足。报表工具可将集算器脚本文件当做数据库存储过程执行,详情参考集算器辅助报表开发的集成方法

??下面举例说明报表开发中常见的跨行计算,以及集算器对应的解法。
??

比上期和同期比

??库表sOrder存储着每个销售员每天的订单,报表需要统计指定时间段内各月份销售额的比上期和同期比。源数据如下:

bubuko.com,布布扣

? 比上期代码如下:
bubuko.com,布布扣

? 先用SQL进行分组汇总,计算出每年每月的销售额,再用公式“当月销售额/上月销售额”计算比上期。结果如下:
bubuko.com,布布扣

? 同期比代码如下:
bubuko.com,布布扣?

? 用SQL对分组后的数据按月份、年份排序,再用公式“当月销售额/上一年同月份销售额”进行计算,结果如下:
bubuko.com,布布扣

每月累计销售额

??计算每个销售员每个月的累计销售额,跨年时清零。

??集算器代码:
bubuko.com,布布扣?

? 先用SQL进行分组汇总,计算出每个销售员每年每月的销售额,再进行跨行计算,用公式“当月累计=本月销售额+上月累计”。结果如下:
bubuko.com,布布扣?

单账户各期余额

??data.csv存储着某账户各期资金存取情况,初始余额为45,需要根据该文件计算出各期余额,部分源数据如下:
bubuko.com,布布扣?

? 集算器代码:
bubuko.com,布布扣?

? 以逗号为分隔符读入文件,按照公式“上期余额-本期存款-本期取款”为公式计算本期余额,结果如下:
bubuko.com,布布扣

多产品每日库存

??库表inout记录着每种商品每天的出入库情况,日期无间断,初始库存为0。现在需要在报表中展现这些数据,并额外增加一列:每日库存。
bubuko.com,布布扣?

? 集算器代码:
bubuko.com,布布扣?

? 对每种产品分别计算(分组),当日库存的算法是“当日入库-当日出库+昨日库存”。集算器可用[-1]表示上一条记录,因此可以直观写出表达式。计算结果如下:
bubuko.com,布布扣?

? 假设时间是间断的,则需要将数据先按不间断的时间序列对齐,再计算库存,代码如下:
bubuko.com,布布扣?

贷款分期

??库表loan存储着贷款信息,包括贷款总额、按月分期数、年利率。要求实现一张分组表,在每条贷款信息下列出各期明细,包括:当期还款额、当期利息、当期本金、剩余本金。源数据如下:
bubuko.com,布布扣?

? 集算器代码:
bubuko.com,布布扣

? 先根据公式计算每笔贷款的月利率和每期还款额,再根据每笔贷款信息新建明细二维表,计算出当期利息、当期本金、剩余本金,最后合并明细表。其中第1笔贷款的明细如下:
bubuko.com,布布扣?

不规则跨行占比

??数据库表majorSum存储着某医院重点科室以及全院的患者统计,报表需要按字母顺序呈现各科室的患者占比,并在最后保留全院患者数量。源数据如下:
bubuko.com,布布扣?

? 期望的报表如下:
bubuko.com,布布扣

? 集算器代码如下:
bubuko.com,布布扣?

? 首先用函数maxp找到全院患者对应的记录(patient最大),再用“\”进行差集运算,获得各科室患者对应的记录,之后计算各科室患者的占比,最后用“|”纵向拼接记录。结果如下:
bubuko.com,布布扣?

集算器协助报表工具实现跨行运算

原文:http://datamachine.iteye.com/blog/2262474

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!