在SQL Server 2008 R2中如何进行统计分析?

0
大家好!

最近基于SQL Server 2008 R2进行数据存储和相关的统计报表开发。原来都是基于Excel进行相关操作,基本可以完成数据的保存、图表展示和相关的统计功能(Excel自带的函数以及相关插件)。

现在在SQL Server 2008 R2环境中,尚未能比较明晰的理解如何实现统计分析(是否需要安装插件)? 

如:我现在要呈现一个展示今年和去年月度销量的报表,我还想在报表中展示两条曲线的相关系数(在Excel中用Correlation函数实现)。

我的环境是SQL Server 2008 R2, SSRS是在BIDS中开发的。

谢谢!
已邀请:
2

zengxinwen 2015-09-18 回答

对于需要查询聚事的数据可以用使用Analysis Services做成一个Cube, 在中cube能够比较好的定义去年销售额。
去年销售额=(Meaurses.[销售额],ParallelPeriod( 时间维度.层次结构,1,时间维层.年.currentMember ))  
SSRS中了也可以用使用MDX获得对应的查询结果集。
 
 
关于求相关系数,在数据挖掘中,可以查询中出相关系数, 但是对于相关系数,可以使用相关系数的公式进行求解。
据说sql server 2016会集成R语言,那时会有完善。
 
 
R=协方差/(自变量1标准方差*自变2标准方差)
 
 
这一个我原来算一元线性方程的T-sql可作参考
 
 
 

with T as 

 
select '2008-02' as year,45 as salary 
union all 
select '2008-03',55 
union all 
select '2008-04',66 
union all 
 
select '2008-05',77 

 
select rank() OVER(ORDER BY year) AS x,YEAR,salary as y 
into #one 
from T 
 
 
 
 
declare @u_x decimal(8, 2) --x的平均值 
declare @u_y decimal(8, 2) --y的平均值 
declare @s2_x decimal(8, 2)--X方差 
declare @cov_x_y decimal(8, 2) --协方差 
 
--############### 求平均值 ############ 
select @u_x= avg(x*1.0),@u_y=avg(y*1.0) 
from #one 
--############### 求平均值 ############ 
 
 
--############### 协方差,X方差 ############ 
select @cov_x_y=sum((x-@u_x)*(y-@u_y))/(select count(1) from #one), 
 
 @s2_x=sum (power((x-@u_x),2)) 
 from #one 
--############### 协方差,X方差 ############ 
 
 
declare @a decimal(8, 2),@b decimal(8,2) 
 
set @a=@cov_x_y/@s2_x 
set @b=@u_y-@a*@u_x 
 
print 'y=a*x+b' 
 
print 'y='+cast(@a as varchar(max))+'*x + '+cast(@b as varchar(max)) 
结果是
 
y=a*x+b
y=10.70*x + 34.00
 
 
 
 

要回复问题请先登录注册