数据聚合和交易明细查询分析

需求

医院、供货商、监管单位通过交易明细查询功能,查询出指定时间段内历史 交易清单。

监管单位,查询目的是为了监督。
医院、供货商查询目的,查询与自己相关交易信息。
数据聚合和交易明细查询分析_第1张图片
1.2 分析

1.2.1 多表查询

主查询表:yycgdmx(采购单明细表)

关联查询表: useryy(内链接)、yycgd(内链接)、usergys(内链接)、ypxx(内链接)、入库信息表(【因为入库的采购单信息少于采购单表信息所以数据不完整,(并不是所有的采购单都入库了)所以使用】外链接)、退货信息(外链接)、结算 信息(外链接)


select 

yycgdmx.*,
yycgdrk.rkl,
yycgdrk.rkje,
yythdmx.thl,
yythdmx.thje,
yyjsdmx.jsl,
yyjsdmx.jsje
 from (
select 
   useryy.mc useryymc,
   yycgd.bm yycgdbm,
   yycgd.id yycgdid,
   usergys.mc usergysmc,
   yycgdmx.ypxxid,
   ypxx.*,
   yycgdmx.cgl,
   yycgdmx.cgje

  from yycgdmx2014 yycgdmx, yycgd2014 yycgd, useryy,usergys,ypxx
 where yycgdmx.yycgdid = yycgd.id
   and yycgd.useryyid = useryy.id
   and yycgdmx.usergysid = usergys.id
   and yycgdmx.ypxxid = ypxx.id
   )yycgdmx

   --外链接入库信息
   left join yycgdrk2014 yycgdrk on yycgdrk.yycgdid = yycgdmx.yycgdid and yycgdrk.ypxxid = yycgdmx.ypxxid
   --外链接退货信息
   left join yythdmx2014 yythdmx on yythdmx.yycgdid = yycgdmx.yycgdid and yythdmx.ypxxid = yycgdmx.ypxxid

   --外链接结算信息
   left join yyjsdmx2014 yyjsdmx on yyjsdmx.yycgdid = yycgdmx.yycgdid and yyjsdmx.ypxxid = yycgdmx.ypxxid

分析数据量:
采购明细表:上千万
入库信息:上千万
退货信息: 少
结算信息:上千万

三张大数据量的表关联查询,如果作统计,在三张表关联的基础上实现,速度慢,。

设想:如果将四张表的数据全部放在一张表,单表查询速度提高很大。

1.2.2 数据聚合意义

数据聚合的意义:
案例:
统计网站页面的访问量。
统计每一年每一个页面访问量。

实现方法:
数据采集:
完成原始数据(统计的来源数据)采集。
当用户点击页面时,需要记录用户点击信息(用户客户端ip、访问时间、访问页面的地址)
用户客户端ip:统计出用户来源于哪个地区
访问时间:统计出网站访问时段(比如哪些时间段访问量大)
访问页面的地址:统计出用户的喜好,哪些页面用户访问多。

如果对原始数据直接进行统计,速度很慢,因为原始数据量很大,所以说要对原始进行数据分析,分析后进行数据聚合。
数据聚合结果:
按分钟聚合:
将原始数据按分钟聚合后存储到单独的分钟聚合表:
聚合时执行一次小范围的统计。
时间(年、月、日、时、分)、XXX页面、访问量(这一分钟的访问总量)
时间(年、月、日、时、分)、XXX页面、访问量(这一分钟的访问总量)
按小时聚合:
将原始数据按小时聚合后存储到单独的小时聚合表:
从分钟聚合表中执行一次小范围的统计。
时间(年、月、日、时)、XXX页面、访问量(这一小时的访问总量)
时间(年、月、日、时)、XXX页面、访问量(这一小时的访问总量)
….
按天聚合:
近年聚合:

通常情况下,单独开发统计系统,后台开始定时任务进行专门数据采集、数据分析、数据聚合。
数据聚合和交易明细查询分析_第2张图片

1.2.3 本系统数据聚合方法

目标:将采购单明细信息、入库信息、退货信息、结算 信息聚合到一张表中,提高查询统计的速度。

设想:在采购单明细表中添加入库信息、退货信息。。。。字段?
这种方法不合理,将统计分析业务功能和采购业务功能使用一张表存储信息,耦合性较强,可扩展性较差。

采用方案:
新创建一张交易明细表YYBUSINESS+4位年份:
记录采购明细、入 库信息、退货信息、结算 信息。
唯一约束:采购单id和药品id
数据聚合和交易明细查询分析_第3张图片

聚合方法如下:
数据聚合和交易明细查询分析_第4张图片
数据聚合和交易明细查询分析_第5张图片
数据聚合和交易明细查询分析_第6张图片

1.2.4 使用触发器进行数据同步

如果原始表和目标表在一个数据库中,建议使用触发器进行数据同步:
原始表插入时向目标表插入
原始表修改时更新目标表记录
原始表删除时删除目标表记录

注意:如果触发器仅仅数据同步,建议使用触发器,如果触发器中有业务逻辑,不建议使用触发器。
:new:在触发器中的一个关键字,表示新记录。
在insert和update触发器中使用。

在delete触发器中:old,:old表示旧数据。

你可能感兴趣的:(2.3)