1、NET统计分析报表解决方案NET统计分析报表解决方案前段时刻接到专门多报表的工作,现拿出一些小例子与大伙儿分享。用户需求:运营商治理员:1. 以合作伙伴为维度对用户订购进行统计分析: a. 可对某一个合作伙伴进行分析,查看该合作伙伴下产品的用户订购在某个时刻段内的进展趋势,需实现折线图、柱状图。 b. 可对所有合作伙伴进行分析,对比在某段时刻内所有合作伙伴下产品的用户订购进展量,查看在某段时刻内所有合作伙伴下产品的用户订购进展量在订购总量中所占比例,需实现柱状图、饼状图。2. 以产品为维度对用户订购进行统计分析: a. 可对某一个产品进行分析,查看该产品的用户订购在某个时刻段内的进展趋势,需实
2、现折线图、柱状图。 b. 可对所有产品进行分析,对比在某段时刻内所有产品的用户订购进展量,查看在某段时刻内所有产品的用户订购进展量在订购总量中所占比例,需实现柱状图、饼状图。合作伙伴治理员:1. 以产品为维度对用户订购进行统计分析: a. 可对本公司下某一个产品进行分析,查看该产品的用户订购在某个时刻段内的进展趋势,需实现折线图、柱状图。 b. 可对本公司下所有产品进行分析,对比在某段时刻内所有产品的用户订购进展量,查看在某段时刻内所有产品的用户订购进展量在订购总量中所占比例,需实现柱状图、饼状图。时刻需支持按年、按月统计。依照用户需求,我们能够开始进行实现。实现步骤:那个地点是用一个例子实现
3、用户需求,没有用到系统内的表,系统内的表有专门多例子中不需要的字段,因此依照系统内表结构新建。1. 数据库数据表设计:合作伙伴表CPInfo产品信息表ProductInfo:用户订购表UserOrderInfo:因为是移动的系统,因此用户订购是通过手机。2. 统计分析表建立:由于现实系统数据量比较大,统计的数据也不是实时的,因此统计分析不直截了当在原始数据表上进行,如此我们就需要建立一个专门用来存放统计分析数据的表。用户订购统计分析表UserOrderStat:a. StatType字段为报表类型,那个地点定义为:CP-按CP公司统计数据,Product-按产品统计数据b. TimeType字
4、段为时刻类型,那个地点定义为:Year-按年统计数据,Month-按月统计数据3. 统计分析储备过程建立:按年统计储备过程:IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(Ndbo.SP_UserOrderStatByYear) AND type in (NP, NPC)DROP PROCEDURE dbo.SP_UserOrderStatByYearGO-按年统计用户订购CREATE PROCEDURE SP_UserOrderStatByYearBeginYear INT, -开始年份EndYear INT
5、-终止年份ASBEGIN DECLARE Temp_BeginYear INT DECLARE Temp_EndYear INT DECLARE BeginTime NVARCHAR(16) DECLARE EndTime NVARCHAR(16) SET Temp_BeginYear = BeginYear SET Temp_EndYear = EndYear + 1 -判定终止年份是否为当前时刻年份或大于当前时刻年份 IF EndYear = YEAR(GETDATE() SET Temp_EndYear = YEAR(GETDATE() SET BeginTime = CAST(Temp
6、_BeginYear AS NVARCHAR(8) + -1-1 SET EndTime = CAST(Temp_EndYear AS NVARCHAR(8) + -1-1 -添加年统计数据 INSERT INTO UserOrderStat ( StatType, TimeType, Year, CPCode, CPChName, ProductCode, ProductName, OrderCount ) -按CP公司统计 SELECT CP, Year, YEAR(uoi.OrderTime), uoi.CPCode, MAX(c.CPChName), , , COUNT(0) FROM
7、 UserOrderInfo uoi JOIN CPInfo c ON uoi.CPCode = c.CPCode JOIN ProductInfo p ON uoi.ProductCode = p.ProductCode WHERE uoi.Status = 1 AND uoi.OrderTime BeginTime AND uoi.OrderTime BeginTime AND uoi.OrderTime YEAR(GETDATE() OR (EndYear = YEAR(GETDATE() AND EndMonth MONTH(GETDATE() BEGIN SET Temp_EndYe
8、ar = YEAR(GETDATE() SET Temp_EndMonth = MONTH(GETDATE() END SET BeginTime = CAST(Temp_BeginYear AS NVARCHAR(8) + - + CAST(BeginMonth AS NVARCHAR(8) + -1 SET EndTime = CAST(Temp_EndYear AS NVARCHAR(8) + - + CAST(EndMonth AS NVARCHAR(8) + -1 -添加月统计数据 INSERT INTO UserOrderStat ( StatType, TimeType, Yea
9、r, Month, CPCode, CPChName, ProductCode, ProductName, OrderCount ) -按CP公司统计 SELECT CP, Month, YEAR(uoi.OrderTime), MONTH(uoi.OrderTime), uoi.CPCode, MAX(c.CPChName), , , COUNT(0) FROM UserOrderInfo uoi JOIN CPInfo c ON uoi.CPCode = c.CPCode JOIN ProductInfo p ON uoi.ProductCode = p.ProductCode WHERE
10、 uoi.Status = 1 AND uoi.OrderTime BeginTime AND uoi.OrderTime EndTime AND NOT EXISTS (SELECT 0 FROM UserOrderStat uos WHERE uos.CPCode = uoi.CPCode AND uos.Year = YEAR(uoi.OrderTime) AND uos.Month = MONTH(uoi.OrderTime) GROUP BY uoi.CPCode, YEAR(uoi.OrderTime), MONTH(uoi.OrderTime) UNION -按产品统计 SELECT Product, Month, YEAR(uoi.OrderTime), MONTH(uoi.OrderTime), MAX(uoi.CPCode), MAX(c.CPChName), uoi.ProductCode, MAX(p.ProductName), COUNT(0) FROM UserOrder
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1