NET统计分析报表解决方案Word下载.docx
《NET统计分析报表解决方案Word下载.docx》由会员分享,可在线阅读,更多相关《NET统计分析报表解决方案Word下载.docx(22页珍藏版)》请在冰豆网上搜索。
1.以产品为维度对用户订购进行统计分析:
a.可对本公司下某一个产品进行分析,查看该产品的用户订购在某个时刻段内的进展趋势,需实现折线图、柱状图。
b.可对本公司下所有产品进行分析,对比在某段时刻内所有产品的用户订购进展量,查看在某段时刻内所有产品的用户订购进展量在订购总量中所占比例,需实现柱状图、饼状图。
时刻需支持按年、按月统计。
依照用户需求,我们能够开始进行实现。
实现步骤:
那个地点是用一个例子实现用户需求,没有用到系统内的表,系统内的表有专门多例子中不需要的字段,因此依照系统内表结构新建。
1.数据库数据表设计:
合作伙伴表〔CPInfo〕
产品信息表〔ProductInfo〕:
用户订购表〔UserOrderInfo〕:
因为是移动的系统,因此用户订购是通过手机。
2.统计分析表建立:
由于现实系统数据量比较大,统计的数据也不是实时的,因此统计分析不直截了当在原始数据表上进行,如此我们就需要建立一个专门用来存放统计分析数据的表。
用户订购统计分析表〔UserOrderStat〕:
a.StatType字段为报表类型,那个地点定义为:
CP-按CP公司统计数据,Product-按产品统计数据
b.TimeType字段为时刻类型,那个地点定义为:
Year-按年统计数据,Month-按月统计数据
3.统计分析储备过程建立:
按年统计储备过程:
IFEXISTS(SELECT*FROMsys.objectsWHEREobject_id=OBJECT_ID(N'
[dbo].[SP_UserOrderStatByYear]'
)ANDtypein(N'
P'
N'
PC'
))
DROPPROCEDURE[dbo].[SP_UserOrderStatByYear]
GO
--按年统计用户订购
CREATEPROCEDURESP_UserOrderStatByYear
@BeginYearINT,--开始年份
@EndYearINT--终止年份
AS
BEGIN
DECLARE@Temp_BeginYearINT
DECLARE@Temp_EndYearINT
DECLARE@BeginTimeNVARCHAR(16)
DECLARE@EndTimeNVARCHAR(16)
SET@Temp_BeginYear=@BeginYear
SET@Temp_EndYear=@EndYear+1
--判定终止年份是否为当前时刻年份或大于当前时刻年份
IF@EndYear>
=YEAR(GETDATE())
SET@Temp_EndYear=YEAR(GETDATE())
SET@BeginTime=CAST(@Temp_BeginYearASNVARCHAR(8))+'
-1-1'
SET@EndTime=CAST(@Temp_EndYearASNVARCHAR(8))+'
--添加年统计数据
INSERTINTOUserOrderStat
(
StatType,
TimeType,
[Year],
CPCode,
CPChName,
ProductCode,
ProductName,
OrderCount
)
--按CP公司统计
SELECT'
CP'
'
Year'
YEAR(uoi.OrderTime),uoi.CPCode,MAX(c.CPChName),'
'
COUNT(0)
FROMUserOrderInfouoiJOINCPInfocONuoi.CPCode=c.CPCode
JOINProductInfopONuoi.ProductCode=p.ProductCode
WHEREuoi.Status=1ANDuoi.OrderTime>
@BeginTimeANDuoi.OrderTime<
@EndTime
ANDNOTEXISTS(SELECT0FROMUserOrderStatuosWHEREuos.CPCode=uoi.CPCodeANDuos.Year=YEAR(uoi.OrderTime))
GROUPBYuoi.CPCode,YEAR(uoi.OrderTime)
UNION
--按产品统计
Product'
YEAR(uoi.OrderTime),MAX(uoi.CPCode),MAX(c.CPChName),uoi.ProductCode,MAX(p.ProductName),COUNT(0)
ANDNOTEXISTS(SELECT0FROMUserOrderStatuosWHEREuos.CPCode=uoi.CPCode
ANDuos.ProductCode=uoi.ProductCodeANDuos.Year=YEAR(uoi.OrderTime))
GROUPBYuoi.ProductCode,YEAR(uoi.OrderTime)
END
按月统计储备过程:
[dbo].[SP_UserOrderStatByMonth]'
DROPPROCEDURE[dbo].[SP_UserOrderStatByMonth]
--按月统计用户订购
CREATEPROCEDURESP_UserOrderStatByMonth
@BeginMonthINT,--开始月份
@EndYearINT,--终止年份
@EndMonthINT--终止月份
DECLARE@Temp_BeginMonthINT
DECLARE@Temp_EndMonthINT
SET@Temp_BeginMonth=@BeginMonth
SET@Temp_EndYear=@EndYear
SET@Temp_EndMonth=@EndMonth+1
--判定终止年份是否大于当前时刻年份,当前月份是否为1月或者判定终止年份是否等于当前时刻年份,终止月份是否大于当前时刻月份
YEAR(GETDATE())OR(@EndYear=YEAR(GETDATE())AND@EndMonth>
MONTH(GETDATE()))
BEGIN
SET@Temp_EndMonth=MONTH(GETDATE())
END
-'
+CAST(@BeginMonthASNVARCHAR(8))+'
-1'
+CAST(@EndMonthASNVARCHAR(8))+'
--添加月统计数据
[Month],
Month'
YEAR(uoi.OrderTime),MONTH(uoi.OrderTime),uoi.CPCode,MAX(c.CPChName),'
ANDuos.Year=YEAR(uoi.OrderTime)ANDuos.Month=MONTH(uoi.OrderTime))
GROUPBYuoi.CPCode,YEAR(uoi.OrderTime),MONTH(uoi.OrderTime)
YEAR(uoi.OrderTime),MONTH(uoi.OrderTime),MAX(uoi.CPCode),MAX(c.CPChName),uoi.ProductCode,MAX(p.ProductName),COUNT(0)
FROMUserOrder